mod_rewrite .html扩展名

时间:2011-08-12 18:26:10

标签: php html apache mod-rewrite

我正在运行Apache 2.2.19服务器,在处理.html扩展时遇到mod_rewrite问题。 .php URL清理工作正常,但不是.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查看正确的扩展并评估它,而不是将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 个答案:

答案 0 :(得分:1)

.html文件的规则有2个附加条件: RewriteCond %{REQUEST_URI} !(\.[^./]+)$ RewriteCond %{REQUEST_FILENAME} !-d

我认为第一个导致问题,因为你在文件名中寻找.html,但uri不应该包含。