2017-10-14 16 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] 

如果文件被修改之前存在哪些檢查。
最後與/一起工作。