Mod rewrite mod_重写重新映射和重定向

Mod rewrite mod_重写重新映射和重定向,mod-rewrite,Mod Rewrite,我想做的是: 如果调用url,则应使用301将其重定向到 及 如果调用url,则在内部调用/bar/foo.php脚本,但不会更改浏览器url(重新映射) 我的规则是这样的 RewriteRule ^foo/foo.php(.*) bar/foo.php$1 [R=301] RewriteRule ^bar/foo.php(.*)$ foo/foo.php$1 [PT] 但这给了我太多的重定向错误 每个单独激活的规则都起作用,但它们一起似乎有冲突…您可以根据实际请求进行匹配: RewriteC

我想做的是:

如果调用url,则应使用301将其重定向到

如果调用url,则在内部调用/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]

哎呀,我是说bar/foo.php在发布之前没有对它进行重命名。我现在编辑了它。我会试试你的建议,告诉你是否行得通。