2017-10-14 17 views
2

我有这样的:.htaccess文件引起我的.htaccess“达到重定向的最大数量”一个奇怪的错误

# Remove php extension 
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule (.*) $1.php [L] 

这使/page.php改写为/页。

的问题是,如果我去一个“/”结尾,我收到错误500不存在的URL,这是记录:

2017-10-12 17:51:07.857 [ERROR] [103.9.XXX.XXX:50468] Maximum number of redirect reached. 

服务器是实际上 Lite Speed http://www.litespeedtech.com/,但我们遇到了与Apache相同的问题。

我该如何解决?

回答

0

是的,在第一次重新接线之后,您再次重新连接结果,所以page/page/.php并且比到page/.php.php等等。只是这样做:

RewriteEngine On 
RewriteBase/
# exclude all existing directories 
RewriteCond %{REQUEST_FILENAME} !-d 
# exclude all existing files 
RewriteCond %{REQUEST_FILENAME} !-f 
# exclude any request with .php at the end 
RewriteCond %{REQUEST_URI} !^.*\.php$ [NC] 
# Ignore leading and trailing slashes 
RewriteRule ^/?(.*)/?$ $1.php [L] 

的解释在评论

+0

好,谢谢!但是[L]并不意味着“最后”,这意味着它不应该继续重写......? – Merc

+0

这是一个误解。这意味着如果你在这之后会有其他的重写规则,那么下一个会被跳过。所以从这个意义上讲,这是这次迭代的最后一次。 – Webdesigner

+0

因此,一旦重写,URL会重新进行全面重写...? – Merc

1

您可以使用:

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{DOCUMENT_ROOT}/$1.php -f 
RewriteRule ^(.+?)/?$ $1.php [L] 

如果文件被修改之前存在哪些检查。
最后与/一起工作。