2013-10-07 76 views
2

當我在我的mod_rewrite正則表達式中包含百分比符號(%)時,我的服務器一直在拋出404錯誤。我到處搜查無濟於事。我正在運行apache 2.4.4並嘗試了下面顯示的B標誌。.htaccess中的百分比符號mod_rewrite

RewriteRule ^pages/([a-zA-Z]+)/([a-zA-Z+%'"]+)$ pages/$1.php?search=$2 [B] 

因此,當我訪問pages/animals/cats%20and%20dogs失敗。但作品像一個魅力,當我改變([a-zA-Z+%'"]+)(.*)

正則表達式級別=幼兒,所以任何幫助,非常感謝。

回答

2

%20在mod_rewrite中使用\s(空格)匹配。因此,將您的規則更改爲:

RewriteRule ^pages/([a-zA-Z]+)/([a-zA-Z+\W'"]+)$ pages/$1.php?search=$2 [B,L] 
+0

當%20位於url中時,用「\ s」替換「%」仍然失敗。 我還需要%2C和%40的百分比符號(,@) –

+1

您需要了解在%URL登陸Apache之前編碼了%2C和%40個字符等。請參閱編輯答案,以匹配所有這些情況使用'\ W' – anubhava

+0

啊,我明白了!非常感謝,除了'(%2F,%5C)(/,\)'以外,所有特殊字符都在工作。 –