2012-11-27 36 views
3

我在.htaccess文件中有一個非常基本的mod_rewrite,上次我看到它時工作正常,但現在它正在用REQUEST_URI的情況做一些奇怪的事情。它的目的是將子域重寫到一個給定的文件,並將該子域作爲bnurl的php變量傳遞。這裏是我的代碼:mod_rewrite在大寫目錄上失敗

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 /位置/沒有被這個發現服務器「這是一個正確的聲明,因爲/ RSDEV /位置/不是一個真實的目錄,但它爲什麼不重寫到RSDEV/newmain.php?bnurl = joebloggs & accesstype = new像預期的那樣?

現在,真正奇怪的是,如果我在瀏覽器中輸入joebloggs.mydomain.co.uk/rsdev/location/(注意rsdev現在是小寫),它會按預期正確重寫。腳本newmain.php在dir RSDEV(大寫)中,所以如果它失敗了,我會預期它會以小寫rsdev的方式失敗。

正如你所看到的,我在每一行都有[NC]。這是我的mod_rewrite代碼失敗或其他神祕的服務器強制讓我整夜?

回答

1

擺脫線:

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

的檢查已經在重寫規則的圖案製作。不僅如此,=連接到%{REQUEST_URI}變量,所以字符串最後以=結尾(它應該確實在模式旁邊)。

+0

Tx爲您的答案喬恩,但我自從發現另一個.htaccess中的RSDEV隱藏,因此與上述衝突。如果沒有別的,你簡化我的代碼的提示是有用的! – user1855277