0

要求された URL と同じ場所にファイルが存在する場合でも、.htaccess ファイルで書き換えを実行しようとしています。

つまり、 /about/index.html にファイルがあっても、 /about/index.html の書き換えが発生するようにします。

現在私は持っています:

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^thehost.example.com$
RewriteCond %{REQUEST_URI} !^/dont-rewrite-when-at-this-url
RewriteRule ^(.*)(/|\.html|\.txt)$ /path/to/stubfile.html?/$1$2 [last,qsappend]

問題は、私が要求した場合

http://thehost.example.com/about/index.html

そして、 /about/index.html にファイルが存在します(これは私が望んでいることです。つまり、ファイルが存在する場合は書き換えが発生する必要がありますが、存在しない場合も発生しても問題ありません)

次に、エラー 500: 無限再帰が発生します。

(リライトされるスタブファイル自体を除外するために RewriteCond を追加しても、違いはありません。)

htaccess rewrite で 404 ではなく 500 エラーが発生するということは、-f RewriteCond がないと再帰が妨げられることを示唆していますが、その結果、望ましくない動作が発生します。

Rewrite を発生させる方法はありますか。つまり、ファイルが存在するという事実を無視し、同じ URL のファイルが存在する場合でもとにかく書き換えるだけですか?

4

1 に答える 1

0

リダイレクト先の宛先を除外するだけです。この場合は次のようになり/path/to/stubfile.htmlます。

RewriteCond %{HTTP_HOST} ^thehost.example.com$
RewriteCond %{REQUEST_URI} !^/dont-rewrite-when-at-this-url
RewriteCond %{REQUEST_URI} !=/path/to/stubfile.html
RewriteRule ^(.*)(/|\.html|\.txt)$ /path/to/stubfile.html?/$1$2 [last,qsappend]
于 2009-12-13T23:30:56.140 に答える