5

私はこのコードを書いた301 redirect

RewriteCond %{THE_REQUEST} ^.*\/index\.php\ HTTP/
RewriteRule ^(.*)index\.php$ /$1 [R=301,L]

http://mysite.com/index.phpとして自分のサイトにアクセスすると、にリダイレクトされる場合に備えて、うまく機能していますhttp://mysite.com

しかし、私localhostがアクセスしようとするindex.phpと、localhost/mysite/index.phpにリダイレクトされlocalhostます。

どうすればこの問題を解決できますか? 上記のコードは正しいですか?

4

4 に答える 4

6

mysiteサーバーのドキュメント ルートと、 localhostのディレクトリに htaccess ファイルがあるようです。htaccess ファイルの場所は、URI をルーティングする方法において非常に重要であるため、ファイルの場所に関係なく作成する必要があります。これを行うには、照合するルールに渡される URI ではなく、条件からパス情報を抽出します。

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(.*)index\.php($|\ |\?)
RewriteRule ^ /%1 [R=301,L]

変数は実際の HTTP リクエストの最初の行で、次の%{THE_REQUEST}ようになります。

GET /path/index.php HTTP/1.1

このパターンは、最初に可能なメソッド(GET、POST、HEAD など)の任意の数に一致し、次に の前にindex.phpある URI パスのグループを作成し、一致を終了しindex.phpます。

于 2013-09-11T14:49:28.207 に答える
4

これを試して

RewriteRule ^(.*)index\.php$ /$1 [R=301,NC] 
于 2013-09-11T13:32:09.803 に答える
0

ディレクティブはこの使用法をRewriteBase表していますが、localhost をテストして、test == true の場合にのみ root をサブディレクトリに書き換えたい場合があります。例えば:

RewriteCond %{HTTP_HOST} ^localhost$
RewriteCond %{REQUEST_URI} !^/subdirectory/
RewriteRule (.*) /subdirectory/$1 [L]

私はこれをしばらく使用しておらず、箱から出してすぐに動作することを保証できません。編集が必要かもしれません。

于 2015-01-21T15:57:09.627 に答える