0

私がやろうとしていることはこれです:

URL http://example.com/foo/foo.phpが呼び出された場合、301 でhttp://example.com/bar/foo.phpにリダイレクトする必要があります。

url http://example.com/bar/foo.phpが呼び出されると、内部的に /bar/foo.php スクリプトが呼び出されますが、ブラウザーの URL は変更されません (再マップされます)。

私のルールは次のようになります

RewriteRule ^foo/foo.php(.*) bar/foo.php$1 [R=301]
RewriteRule ^bar/foo.php(.*)$ foo/foo.php$1 [PT]

しかし、これによりリダイレクトエラーが多すぎます。

アクティブ化された各ルールは個別に機能しますが、一緒にすると競合するようです...

4

1 に答える 1

2

実際のリクエストに対して次のいずれかを照合できます。

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

または、書き換えループを完全に防止します。

RewriteCond %{ENV:REDIRECT_STATUS} !200
RewriteRule ^foo/foo.php(.*) bar/foo.php$1 [R=301]
RewriteRule ^bar/foo.php(.*)$ foo/foo.php$1 [L]
于 2012-09-26T10:50:10.877 に答える