2

サイト上のすべてのURLを1つのスクリプトで処理したい。だから私はこのような書き換えルールを入れました:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) /myscript.php?p=$1 [L]

ただし、実際に「myscript.php」が含まれているURLでスクリプトへのアクセスを許可したくないので、それらをメインサイトにリダイレクトしたいと思います。

Redirect 301 /myscript.php http://example.com/

問題は、これらのルールの両方を.htaccessファイルに入れると、無限ループが発生することです。両方を同時に動作させるにはどうすればよいですか?

また、次のようなものをリダイレクトできるようにしたいと思います。

/myscript.php?p=foo -> /foo
4

2 に答える 2

4

環境変数を設定できます

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !myscript\.php
RewriteRule (.*) /myscript.php?p=$1 [L,E=LOOP:1]

2番目のルールでそれをテストします

RewriteCond %{ENV:REDIRECT_LOOP} !1
RewriteRule ^myscript\.php$ / [R,L]

有効にしてテストしないでください。詳細について301は、この回答.htaccess 書き換えルールをデバッグするためのヒント を参照してください。

于 2013-03-11T14:27:37.613 に答える