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/ 会返回“在此服务器上找不到请求的 URL /RSDEV/location/”的响应,这是一个正确的语句,因为 /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]  

已在重写规则的模式中进行检查。不仅如此, the=还连接到%{REQUEST_URI}变量,所以字符串以 a=结尾(它应该在模式旁边)。

于 2012-11-27T05:02:58.293 回答