2016-09-01 107 views
1

我有一個.htaccess文件,它測試一個特定的文件並運行一個PHP腳本,如果它存在,並且重定向到另一個網頁,如果它不是。RewriteCond不區分大小寫的文件檢查

RewriteEngine on 
RewriteCond %{DOCUMENT_ROOT}/directory/$1 -f 
RewriteRule ^(.+\.png)$ process.php?file=$1 [QSA] 

RewriteRule ^(.+\.png)$ http://other.website.com/$1 

我可以直接運行PHP腳本並執行重定向,但這樣做速度更快。但是,我需要使RewriteCond檢查不區分大小寫。我曾嘗試設置所有標誌並啓用拼寫檢查,但無濟於事。

RewriteEngine on 
CheckSpelling on 
RewriteCond %{DOCUMENT_ROOT}/directory/$1 -f [NC] 
RewriteRule ^(.+\.png)$ process.php?file=$1 [QSA,NC] 

RewriteRule ^(.+\.png)$ http://other.website.com/$1 

拼寫模塊在httpd.conf啓用,.htaccess文件可以修改所有可能的設置,但它仍然工程和以前一樣,如果進入不同的套管文件名的文件不會被重定向。

回答

1

嘗試在Apache配置中使用tolower映射。首先,create a map在您httpd.conf(或apache2.conf或虛擬主機配置)的tolower電話:

RewriteMap lc int:tolower 

接下來,在你的病情檢查,轉換$1爲小寫:

RewriteEngine on 
RewriteCond %{DOCUMENT_ROOT}/directory/${lc:$1} -f [NC] 
RewriteRule ^(.+\.png)$ process.php?file=$1 [QSA,NC] 

RewriteRule ^(.+\.png)$ http://other.website.com/$1 

請注意,對於上面的工作,你的文件應該總是在較低的字母。

+0

好的方法,但是那裏已經有一些文件的負載了,有些可能有衝突的名字(只有不同​​的情況)。我根本無法將它們全部轉換爲小寫。 – IllidanS4