2016-07-26 144 views
1

这是我的.htaccess文件:重定向所有请求到index.php的.htaccess

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . index.php [L] 

我收到500内部服务器错误。此命令后: 猫/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

它存在那里。 –

+0

然后只是这个规则不能导致重写循环 – anubhava

+0

什么版本的apache? – Will

回答

2

将您的htaccess规则更改为下面,然后它将工作。

RewriteEngine On 
    RewriteBase/
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.+)$ /index.php/$1 [L,QSA] 
0

结帐this serverfault answer

总之,[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] 
相关问题