必须在子目录中包含RewriteEngine Off,否则我会收到“请求超出10个内部重定向的限制”

时间:2016-02-16 18:12:15

标签: apache .htaccess mod-rewrite

我在根目录中的.htaccess上有以下RewriteRule。它只是更改位置并包含一个附加参数:

RewriteCond %{THE_REQUEST} /application/auth\.php\?(.*) [NC]
RewriteRule ^ /application/external/external.php?f=CheckThese[L,QSA]

我在内部服务器错误的日志中收到“请求超出了由于可能的配置错误引起的10次内部重定向的限制”。

奇怪的是,如果我在/ application / external目录中放入带有RewriteEngine Off的.htaccess文件,我就不会再出错了。

我在根目录中的.htaccess中有以下内容:

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteCond %{SCRIPT_FILENAME} !.*outputstuffwithouthttps.php$ [NC]
RewriteRule ^(.*)$ https://mywebsitedomain.net/$1 [R=301,L]

我在root中的.htaccess文件中只有两个重写规则做同样的事情。他们已经在指向的目录中使用了RewriteEngine Off的.htaccess文件。我冒了赌,把同一个文件放在另一个sub directoy中,发现这解决了这个问题。

如果我注意到将端口80更改为https的规则,它不会改变任何内容,所以我不认为这是原因。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

将您的规则更改为:

'

否则您的规则将导致无限循环,因为RewriteCond %{THE_REQUEST} /application/auth\.php\? [NC] RewriteRule (?:^|/)application/auth\.php$ /application/external/external.php?f=CheckThese [L,QSA,NC] 永远不会因为您只进行内部重写而发生变化。