mod_rewrtie重新映射和重定向



我想做的是这样的:

如果调用 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]

但这给了我太多的重定向错误。

每个单独激活的规则都有效,但它们似乎相互冲突......

您可以匹配实际请求:

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]

相关内容

最新更新