2011-05-23 107 views
0

現在我有一個重寫規則,看起來像這樣:允許GET變量中的.htaccess重寫

RewriteRule ^product-([a-z^-]+).php /sample.php?m=$1 

如果我嘗試將「以產品爲test.php的」,它工作正常。

如果我嘗試將「以產品爲test.php的?變量= 1」,將無法正常工作。

如何修改重寫規則允許GET變量?

注:GET變量應該只允許字母(AA-ZZ)和破折號( - )。

回答

2

我相信它應該讀

RewriteRule ^product-([A-Za-z\-]+).php /sample.php?m=$1&%{QUERY_STRING} 

注意反斜槓的衝刺。短劃線是匹配部分的一個操作符,所以它必須被轉義。

此外,包括得到一個重寫URL變量而無需重寫他們的查詢字符串標識符追加到尾部。

這將改寫:

www.example.com/product-widget.php?variable=12

www.example.com/sample.php?m=widget&variable=12

這是什麼,我相信你會的。

話雖如此,我不知道逃避破折號實際工作,因爲我已經在我的URL重寫,我似乎無法解析使用破折號只是發現了一個問題。這就像Apache 1.3.33重寫模塊不喜歡重寫字符串中的破折號。無論如何,這是它應該如何工作,它在我的服務器上工作。

+0

經進一步勘查,我發現,在我的情況,逃逸儀表不能正常工作。我最終不得不做的是將短劃線作爲正則表達式查詢中的最後一個字符。即:^([A-Za-z0-9 _-])/?$ – Patrick 2011-05-25 12:50:14