3

私は .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 コードが失敗しているのか、それとも他の神秘的なサーバーの力が私を一晩中眠らせているのでしょうか?

4

1 に答える 1

1

次の行を削除します。

RewriteCond %{REQUEST_URI}= "RSDEV/location/" [NC]  

チェックは書き換えルールのパターンで既に行われています。それだけでなく、は変数に=接続されているため、文字列は最後に aで終わります (実際にはパターンの隣にあるはずです)。%{REQUEST_URI}=

于 2012-11-27T05:02:58.293 に答える