要求された 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 のファイルが存在する場合でもとにかく書き換えるだけですか?