2

我有一个重写条件和规则。

RewriteCond %{DOCUMENT_ROOT}$0 !-f
RewriteRule ^[^*]+$ index.php [L]

我需要.html.phpin替换%{DOCUMENT_ROOT}$0

原因是,我正在重写我的 url,.html但是当这个文件检查现有文件时,由于%{DOCUMENT_ROOT}$0查找文件而失败thefile.html

我需要它来寻找thefile.php

4

2 回答 2

9

要重写具有相同名称.html的现有.php文件的扩展名,请尝试以下规则而不是您的规则:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\.html$ $1.php?%{QUERY_STRING} [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^.*$ index.php [L]

您刚刚将任何不存在的文件重写为 index.php

于 2012-06-09T23:45:03.067 回答
4

解决了!

RewriteCond %{DOCUMENT_ROOT}$0 !-f
RewriteRule ^(.*).html$ $1.php [L]

RewriteCond %{DOCUMENT_ROOT}$0 !-f
RewriteRule ^[^*]+$ index.php [L]

我不得不使用它两次,首先,将所有 .html 重写为 .php,然后在请求 for.php 时,第二个条件开始发挥作用。

于 2012-06-10T00:04:56.940 回答