2013-02-17 25 views
3

我遇到的問題是,當URL包含一個存在的目錄時,該URL將被更改爲該文件的大小寫。如果目錄存在,Htaccess會更改URL大小寫

更具體地說,這是發生了什麼事:

當我去domain.com/cron/xxx然後在我的PHP腳本,uri將是:

cron/xxx 

但是,如果該文件夾Cron存在,那麼uri會:

Cron/xxx 

有誰知道是什麼原因導致這種情況發生?

這裏是我的.htaccess文件:

RewriteEngine敘述在

#remove www. 
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] 
RewriteRule ^(.*)$ http://%1/$1 [R=301,L] 

RewriteCond %{HTTP_HOST} ^api 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ index.php?uri=api/$1 [L,QSA] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ index.php?uri=$1 [L,QSA] 
+0

我是一個很大的業餘愛好者,但是在中間等待專業人士的幫助下,Windows服務器不區分大小寫,它只是指出真實的信件情況?您可以嘗試通過嘗試創建兩個僅與案例不同的文件夾,例如'test'和'TEST',看看你是否確實有兩個單獨的文件夾。 – 2013-02-17 21:09:32

+0

@MarkusvonBroady事情是該文件夾應該是不相關的。如果我轉到url'domain.com/test',我想要路由uri'test';但是如果文件夾'TEST'恰好存在,則uri變量將包含'TEST',這不是我想要的。 – Supericy 2013-02-17 21:15:05

+0

您是否啓用了mod_speling? – nwellnhof 2013-02-17 22:10:24

回答

0

我不是超在ModRewrite精通,但你可以嘗試:

RewriteMap lc int:tolower 

,然後在使用它你像這樣的規則:

RewriteRule (.*) ${lc:$1} [R=301,L]