即使存在与请求的 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 导致 500 错误而不是 404表明缺少 -f RewriteCond 会阻止递归,但这会导致我不想发生的行为。
有没有办法让重写发生,即忽略文件存在的事实,即使存在相同 URL 的文件,也只是重写?