2

書き換え条件とルールがあります。

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

inに置き換える必要があり.htmlます。.php%{DOCUMENT_ROOT}$0

その理由は、URL を に書き換えているのですが、このファイルが既存のファイルをチェックするときに、 file を探しているため.htmlに失敗するためです。%{DOCUMENT_ROOT}$0thefile.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 に書き換えてから、.php のリクエストで 2 番目の条件が適用されるように、2 回使用する必要がありました。

于 2012-06-10T00:04:56.940 に答える