2017-07-07 89 views
1

我有以下重寫規則:的.htaccess重寫規則區分大小寫

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/.]+)/?$ /pages/acticle.$1.php [L] 

目前,它是區分大小寫的。我需要刪除這個限制。我嘗試將[L]更改爲[NC,L],但它不起作用。我錯過了什麼?

+0

你說的不區分大小寫是什麼意思?正則表達式中沒有任何裝入的字符。我想你也許在你的正則表達式中有一個錯誤,'.'沒有被轉義,並且是一個負面字符類的一部分... – doublesharp

+0

你想把所有的東西都改寫成小寫嗎? – doublesharp

回答

2

你的模式不包含任何套管字符,因此增加NC不會有任何效果。如果您RewriteRule是爲^abcde,你想它也匹配ABCDE然後加入NC的規則會做到這一點。

示例中的模式匹配一​​次或多次不是./的任何字符,然後將其添加到article.$1.php結果中。默認情況下,它會採取任何直接相匹配,以便abc = article.abc.phpABC = article.ABC.php,等等。

我猜,所有你的文章的文件名是小寫,並且你想重寫ABCAbCabc,從而爲文件一致的命名 - 都得到article.abc.php。如果是這樣,有幾個選項listed on this page - 使用循環中.htaccess繼續之前與小寫來代替大寫,在你http.conf使用RewriteMap,或使用mod_speling