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]
いいえ。それは全く問題を引き起こさない。何らかの理由で、mod_rewriteは.php拡張子のみを検索しようとしているので、エラーログにFile not foundというエラーが表示されています。 – bolts