这是我的.htaccess文件:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
我收到500内部服务器错误。执行此命令后: cat /var/log/apache2/error.log 我收到了这个错误:
AH00124: 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.
请帮我理清一下?
答案 0 :(得分:2)
将您的htaccess规则更改为以下,然后它将起作用。
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ /index.php/$1 [L,QSA]
答案 1 :(得分:0)
总之,[L]仅停止当前规则集的处理,并将重写的URL传递回URL解析引擎,后者可能会再次应用您的规则集。 10倍。然后Apache说停止。
如果重写已经转到index.php
,您可以添加不重写的条件:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/index.php
RewriteRule . index.php [L]
或者,您可以在其他规则之前检查ENV:REDIRECT_STATUS
,并停止应用任何其他规则:
RewriteEngine On
RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule ^ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]