2010-09-25 32 views
0

我想要得到的一切上升到「/」,並以「.PHP」當文件不存在

工作正常,但是當文件不存在,我得到內部錯誤合併內部錯誤

RewriteRule ([^\/]*) $1.php 

回答

1

在執行重寫之前,您可能想要檢查重寫的內容是否存在,以避免出現循環(注意測試模式與重寫的內容相匹配)。一種可能的方法,這是做到以下幾點:

# Check that the file isn't a directory 
RewriteCond %{REQUEST_FILENAME} !-d 
# ...nor is it a file 
RewriteCond %{REQUEST_FILENAME} !-f 
# ...but the result of the rewrite will be 
RewriteCond %{DOCUMENT_ROOT}/$1.php -f 
RewriteRule ^([^/]+) $1.php 

這也有顯示在其中生成404例原始URL的(未成年人)的利益,只要你使用已有Apache的錯誤消息。如果您要重寫爲不存在的PHP文件,服務器會說找不到/something.php,而不是/something/,但由於當目標文件沒有執行重寫時存在,你得到/something/

如果仍然出現500錯誤,那麼.htaccess文件中可能存在另一個衝突規則。您還應該檢查Apache的錯誤日誌,以獲取有關錯誤的更多詳細信息,儘管在這種情況下我懷疑它是超出內部重定向限制的消息。

1

也許處理不存在的文件和/或目錄的情況下可能會幫助

RewriteCond %{REQUEST_URI} -d 
RewriteCond %{REQUEST_URI} -f 

嘗試處理這些案件,以避免錯誤

相關問題