Php 如何解决请求超出10个内部重定向限制的问题(相当具体的htaccess文件)?
我正在通过一个网站的MAMP建立一个本地环境,几个月前,为了查看该网站上的一些旧功能,我从网站上删除了该网站,目前我在apache_error.log文件中收到以下错误Php 如何解决请求超出10个内部重定向限制的问题(相当具体的htaccess文件)?,php,apache,.htaccess,mamp,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 'Lo
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/
我曾在其他帖子中寻找解决方案(例如。
),我知道这与我的.htaccess文件有关。然而,由于我的文件相当具体,我一直无法找出错误所在。这是(为了隐私起见,我将我的网站名改为example.com):
这可能是一个长期的问题,但如果有人能看一看,并提供一个可能导致错误的想法,我将永远感激 我在
.htaccess
文件中遇到了许多重写规则。最简单的方法是在.conf
文件中为该域/站点添加一行以增加限制,因为10有点紧。使用LimitInternalRecursion
后跟更高的数字
例如,我有两个他们拥有的站点:
LimitInternalRecursion 100
(一个站点有很多阻止规则)
LimitInternalRecursion 500
(一个重ajax的SSL站点,它有很多重定向来强制执行https而不是http)
一个很好的经验法则是越重的电路越多,这个数字就越高,特别是当你的重写规则做了很多阻塞的时候
如果您仍然希望精简重写规则,我会选择(对于Apache2.2):
命令允许,拒绝
全盘否定
(Require all denied
对于Apache 2.4)
而不是RewriteRule^\.htaccess$-[F]
来保护.htaccess和其他文件(例如.ini、.log、.psd、.sh、.eye等)。这使您能够更灵活地阻止其他文件
更新:
在今天阅读Apache文档了解其他内容时,我了解到LimitInternalRecursion
将采用两个数字值,第一个数字表示重定向的最大数量,第二个数字表示“子请求嵌套的深度”(请继续阅读),类似于:
LimitInternalRecursion 100 20
将更好地调整指令
由于只存在一个数字,Apache假定两个值都是该数字,因此:
LimitInternalRecursion 500
Apache将读取为:
LimitInternalRecursion 500 500
这有点极端
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]