mod_rewirte の -f、-d
RewriteCond の -f、-d がどーしても効かない... と悩んでました。効かなかった設定はコレ。
RewriteCond %{REQUEST_URI} ^/(support|news)/ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^/(support|news)/(.*)$ /foo/bar/baz/hiki/app/hiki.cgi?$2 [L]
先月末くらいに躓いたのですが少し忙しかったので放置して(別のルールで対処して)置いたのですが、ちょっと時間ができたので再チャレンジ。ググったりしてやっと上手くいきました :)。
RewriteCond %{REQUEST_URI} ^/(support|news)/ RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-d RewriteRule ^/(support|news)/(.*)$ /foo/bar/baz/hiki/app/hiki.cgi?$2 [L]
そう、%{DOCUMENT_ROOT} が無かったのでした。分かってしまえば当たり前*1なんですが、気づかないと.... ですね。
RewriteBase 使えば良いのでしょうが、他にも幾つか書き換えているのでベタにしちゃいました。
*1:REQUEST_FILENAME だけじゃパスが分かんないですからね