私は他の人からスクリプトを購入しました(何も気にせず、ちょっとカスタマイズされたCMSと言いましょう) "bootstrap"、 "laravel"などの名前を除いては何もありません。私は基礎を知っている人で、中級レベルから何かを知っている人ですが、もう少ししか知りませんが、私はいくつかのすばらしい解決策を見て、混乱しています。mod_rewrite(htaccess)を使用してサブフォルダをメインドメイン(ルート)にリダイレクト
奇妙な拡張子のファイルとの2つの .htaccessファイル(ルートに1つ、/ public/folderに2つ)があります。それでも、ファイルが非常に多いにもかかわらず、すべてが本当にうまく機能し、高速です。
だから、ブラウザがページ(domain.com)をロードするとき、それは/パブリック/フォルダから(私が推測する)コンテンツを要求しているようですし、すべてが正常に動作し、ドメインは、ドメインとして残っています:ここで
は、問題の説明です.com。問題は、domain.com/publicも機能していることです。domain.comのこの厄介なアドレスのインデックスに登録するのを防ぐために、この特定のアドレスにリダイレクトを作成したいのですが、domain.comはまだ正常に動作するはずです。私はここや他のページで見つけたmaaanyソリューションを試しましたが、ページがクラッシュしたり(内部サーバーエラー)、まったく何もしませんでした。私はそれらのいくつかは、ファイルが別のサブフォルダに埋め込まれていないときだけ動作するかもしれないと思う。私は知らない、私はアイデアがありません。手伝ってくれませんか?ここで
は、ルートの.httaccessRewriteEngine On
RewriteCond %{THE_REQUEST} /public/([^\s?]*) [NC]
RewriteRule^%1 [L,NE,R=302]
RewriteRule ^((?!public/).*)$ public/$1 [L,NC]
されており、ここにある公共/ .htaccessのそれはあなたが具体的には、第1の条件+のルールでは、動作するはず持っているもののように私には見えます
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule^index.php [L]
</IfModule>
Walfに感謝します。あなたのコードは何もしませんでしたが、domain.com/publicはまだロードされ、domain.comにはリダイレクトされません...理由を知っていますか? –
あなたは他のページが読み込まれているかどうかは述べていません。ルート '.htaccess'の先頭にナンセンスのランダムなテキスト行を置くとどうなりますか?あなたがエラーを受け取らないなら、あなたのルールはまったく使われていないかもしれません。 – Walf