2011-08-12 19 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) 

セキュリティとプライバシー上の理由から、一部の情報は省略されています(括弧内はテキストで置き換えられています)。 forbiddenとnotfoundは実際にはHTML拡張子を持つHTMLファイルですが、何らかの理由でmod_rewriteが.phpファイルにアクセスしようとしています。ファイル拡張子を.phpに変更するだけの簡単な修正がなければ、どのようにして適切な拡張子を調べ、それを評価するためにmod_rewriteを得ることができますか?

ありがとうございます!ここで

は、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拡張子のみを検索しようとしているので、エラーログにFile not foundというエラーが表示されています。 – bolts