如何解决请求超出 10 个内部重定向问题(而是特定的 htaccess 文件)?

问题描述 投票:0回答:1

我正在通过一个网站的 MAMP 设置本地环境,几个月前我从网络上删除了该网站,以便查看该网站上的一些旧功能,目前我在 apache_error.log 中收到以下错误文件。

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., referer: http://localhost:8888/

我在其他帖子中寻找了解决方案(例如 由于可能的配置错误,请求超出了 10 个内部重定向的限制),我知道这与我的 .htaccess 文件有关。但是,由于我的文件相当具体,我无法找出问题所在。这是(为了保护隐私,我将网站名称更改为 example.com):

Options FollowSymlinks
RewriteEngine On
RewriteRule ^demo/ - [L]
RewriteRule ^\.htaccess$ - [F]
RewriteCond %{HTTP_HOST} ^example.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]
RewriteCond %{REQUEST_URI} =""
RewriteRule ^.*$ example/public/index.php [NC,L]
RewriteCond %{REQUEST_URI} !^/public/.*$
RewriteRule ^(.*)$ example/public/$1
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^.*$ - [NC,L]
RewriteRule ^public/.*$ example/public/index.php [NC,L]

这可能不太可能,但如果有人能看一下并提供可能导致错误的原因,我将永远感激不已。

php apache .htaccess mamp
1个回答
0
投票

我在我的

.htaccess
文件中遇到过很多 RewriteRules 的情况。最直接的方法是在该域/站点的
.conf
文件中添加一行以增加限制,因为 10 有点紧张。使用
LimitInternalRecursion
后接一个更大的数字。

例如,我有两个网站:

LimitInternalRecursion 100
(一个网站有很多屏蔽规则)

LimitInternalRecursion 500
(一个大量使用 ajax 的 SSL 站点,具有大量重定向以强制执行 https 而不是 http)

一个好的经验法则是 RewiteRules 越多,数字越高,特别是如果您的 RewriteRules 执行大量阻塞时。

如果您仍然希望缩减 RewritesRules,我会选择(对于 Apache 2.2):

<FilesMatch "\.(htaccess|htpasswd|ini|phps|psd|log|sh|eye)$">
Order Allow,Deny
Deny from all
</FilesMatch>

Require all denied
对于 Apache 2.4)

而不是

RewriteRule ^\.htaccess$ - [F]
来保护 .htaccess 和其他文件(例如 .ini、.log、.psd、.sh、.eye 等)。这使您可以更灵活地阻止其他文件。

更新:

今天在阅读 Apache 文档时了解其他内容,我了解到

LimitInternalRecursion
将采用两个数值,第一个数字表示最大重定向数量,第二个数字表示“子请求可以嵌套的深度”(阅读 LimitInternalRecursion ),类似:

LimitInternalRecursion 100 20

将更好地调整指令。

仅存在一个数字,Apache 会假设这两个值都为该数字,因此:

LimitInternalRecursion 500

将被 Apache 读取为:

LimitInternalRecursion 500 500

这有点极端...

© www.soinside.com 2019 - 2024. All rights reserved.