0

我在使用一个简单的 RewriteRule 时遇到了一些非常奇怪的问题,它在本地正常工作,但是当部署到服务器时,我收到 500 个文本错误:

Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.

以下是我正在使用的代码:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_URI} !^/(foo|bar|baz)/?
    RewriteCond %{REQUEST_URI} !^/410/index.php$
    RewriteRule ^.*$ /410/index.php? [L]
</IfModule>

我想要的是除了/foo, /bar, 或/baz显示位于 /410/index.php 的页面之外的任何内容

是的,mod_rewrite.c 已在服务器上安装/启用。

4

1 回答 1

0

由于这是针对.htaccess文件的,请尝试删除重写规则中“410”之前的斜杠。此外,如果您检查它是否是应该停止无休止重定向回索引页面的真实文件。

?我会猜测一下,说您正在重写的请求字符串以刷新现有查询字符串可能不匹配(我找不到有关此的文档) 。

RewriteEngine On
#check if it's a not a real file
RewriteCond %{REQUEST_FILENAME} !-f
#Check if the request doesn't start with foo, bar, or baz
RewriteCond %{REQUEST_URI} !^/(foo|bar|baz)
#Check if uri doesn't only contain the /410/index.php
RewriteCond %{REQUEST_URI} !^/410/index.php\??$
#rewrite the file
RewriteRule ^.*$ 410/index.php? [L]
于 2013-06-11T15:33:45.523 回答