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 回答