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

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

我正在通过一个网站的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/
我曾在其他帖子中寻找解决方案(例如。 ),我知道这与我的.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]