2011-08-12 139 views
0

我正在運行Apache 2.2.19服務器,並且在處理.html擴展時遇到了mod_rewrite問題。 .php URL清理工作正常,但不是.html。在錯誤日誌,我得到這個:mod_rewrite .html擴展

[Fri Aug 12 04:17:36 2011] [error] [client (AN IP ADDRESS)] script '(A DIRECTORY PATH)/forbidden.php' not found or unable to stat, referer: (MY WEBSITE) 
[Fri Aug 12 04:17:38 2011] [error] [client (AN IP ADDRESS)] script '(A DIRECTORY PATH)/notfound.php' not found or unable to stat, referer: (MY WEBSITE) 

其中省略出於安全和隱私的原因(這是由文本括號代替)的一些信息。禁止和未發現實際上是帶有HTML擴展名的HTML文件,但由於某些原因,mod_rewrite正試圖訪問.php文件。如果沒有將文件擴展名更改爲.php的簡單方法,我怎麼才能讓mod_rewrite查看正確的擴展名並對其進行評估,而不是將HTML文件視爲具有.php擴展名?

非常感謝!

下面是相關的代碼,這是在httpd.conf:

RewriteEngine on 
Options +FollowSymlinks 
RewriteCond %{REQUEST_URI} !(\.[^./]+)$ 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteCond %{REQUEST_FILENAME} \.html-f 
RewriteRule (.*) /$1.html [L] 

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^.]+\.)+html\ HTTP 
RewriteRule ^([^\.]+)\. $1 [R=302,L] 

RewriteCond %{REQUEST_FILENAME} \.php-f 
RewriteCond %{REQUEST_FILENAME} phpinfo 
RewriteRule (.*) /$1.php [L] 

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^.]+\.)+php\ HTTP 
RewriteRule ^([^\.]+)\. $1 [R=302,L] 

回答

1

爲.html文件的規則有2個附加條件: RewriteCond %{REQUEST_URI} !(\.[^./]+)$ RewriteCond %{REQUEST_FILENAME} !-d

我第一個想到的原因造成的問題,因爲你正在尋找文件名中的.html,但是uri不應該包含。

+0

沒有。這根本不會造成任何問題。無論出於何種原因,mod_rewrite只會嘗試查找.php擴展名,因此會在錯誤日誌中給我提供文件未找到錯誤。 – bolts