我在 .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 代码失败还是其他一些神秘的服务器力量让我彻夜难眠?