如何解决请求超出10个内部重定向问题的限制(相当具体的htaccess文件)?

时间:2017-01-09 05:58:08

标签: php apache .htaccess mamp

我通过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/

我在其他帖子中寻找解决方案(例如 Request exceeded the limit of 10 internal redirects due to probable configuration error),我知道它与我的.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]

这可能是一个远景,但如果有人可以看一看并提出可能导致错误的原因,我将永远感激不尽。

1 个答案:

答案 0 :(得分:0)

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

例如,我有两个网站:

LimitInternalRecursion 100(一个有很多阻止规则的网站)

LimitInternalRecursion 500(ajax-heavy 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>

(Apache {的Require all denied

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

<强>更新

在今天阅读Apache文档的其他内容时,我了解到LimitInternalRecursion将采用两个数字值,第一个数字表示最大重定向数,第二个数字表示&#34;子请求可以嵌套的程度如何&# 34; (阅读LimitInternalRecursion),如:

LimitInternalRecursion 100 20

将更好地调整指令。

只有一个数字存在,Apache假定这两个值的数字,所以:

LimitInternalRecursion 500

将被Apache读取为:

LimitInternalRecursion 500 500

这有点极端...