我通过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]
这可能是一个远景,但如果有人可以看一看并提出可能导致错误的原因,我将永远感激不尽。
答案 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
这有点极端...