将重写放入 Apache 中的目录上下文时出现无限循环

将重写放入 Apache 中的目录上下文时出现无限循环

我想将 www.example.com/foo 重定向到 www.example.com/bar/index.php/foo

所以我有规则(mod_rewrite)

<Location />
    RewriteEngine on
    RewriteRule /(.*) /bar/index.php/$1 [L]
</Location>

此配置导致了无限循环,如何修复?

谢谢。

答案1

就像 Ency 所建议的,您需要确保您不会尝试访问index.php

RewriteEngine on
RewriteCond %{REQUEST_URI} !/bar/index.php/.*
RewriteRule /(.*) /bar/index.php/$1 [L]

希望这可以帮助。

答案2

您应该尝试添加 RewriteCond:RewriteCond %{HTTP_USER_AGENT} ^Mozilla。铬合金。$

仅当请求来自浏览器时才执行重定向,这样可以防止无限循环*。

*- 假设 apache 重定向请求将有一个空的 http 标头 HTTP_USER_AGENT/apache,而不是原始标头。PS:您可能希望将 ie 的 http 标头添加到列表中。

相关内容