私は .htaccess ファイルに非常に基本的な mod_rewrite を持っていますが、前回見たときは確かに機能していましたが、REQUEST_URI のケースで奇妙なことをしています。意図された目的は、サブドメインを特定のファイルに書き直し、サブドメインを bnurl の php var として渡すことです。これが私のコードです:
RewriteCond %{REQUEST_URI}= "RSDEV/location/" [NC]
RewriteCond %{HTTP_HOST} .
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} ^([^.]+)\.mydomain\.co\.uk(:80)? [NC]
RewriteRule ^RSDEV/location/$ RSDEV/newmain.php?bnurl=%1&accesstype=new [NC,L]
ここで、joebloggs.mydomain.co.uk/RSDEV/location/ を Web ブラウザーに入力すると、"The requested URL /RSDEV/location/ was not found on this server" という応答が返されます。/RSDEV/location のため、これは正しいステートメントです。 / は実際のディレクトリではありませんが、期待どおり RSDEV/newmain.php?bnurl=joebloggs&accesstype=new に書き換えられなかったのはなぜですか?
ここで本当に奇妙なのは、ブラウザに joebloggs.mydomain.co.uk/rsdev/location/ と入力すると (rsdev が小文字になったことに注意してください)、期待どおりに正しく書き換えられることです。スクリプト newmain.php は dir RSDEV (大文字) にあるため、失敗する場合は、小文字の rsdev で逆に失敗すると予想していました。
ご覧のとおり、各行に [NC] があります。これは私の mod_rewrite コードが失敗しているのか、それとも他の神秘的なサーバーの力が私を一晩中眠らせているのでしょうか?