2010-10-13 79 views
0

我有這個網址:http://localhost/zina/Artist%20One%20Demo?l=8&m=10&c ,它需要成爲:http://localhost/?p=Artist%20One%20Demol=8&m=10&c&option=com_zina&Itemid=82需要用重寫規則正則表達式幫助

我使用這個重寫的網址:

RewriteRule ^zina/(.*)?(.*)$ /?p=$1&$2&option=com_zina&Itemid=82 [L,R] 

不過,我風與網址看起來像這樣:http://localhost/?p=Artist%20One%20Demo/Title%20One&&option=com_zina&Itemid=82

換句話說,$ 2沒有與任何東西匹配。誰能告訴我爲什麼?

回答

1

?是一個特殊字符(選擇0或上一模式1),.*是貪婪(將匹配儘可能可以去,所以才結束,因此$ 2將總是爲空用$ 1什麼都吃,直到該行的末尾。

查詢字符串不是重寫規則對匹配的字符串,並在查詢字符串檢查模式通常與RewriteCond %{QUERY_STRING} pattern前完成RewriteRule。

然而,我們並不需要用正則表達式來涉足獲得在URL中的查詢字符串:「?」

RewriteRule ^zina/(.*)$ /?p=$1&option=com_zina&Itemid=82 [L,R,QSA] 
0

這是關閉袖口,沒有測試,但它看起來像你不逃避你?在重寫正則表達式,以便它將字面處理它。

試試這個也許

RewriteRule ^zina/(.*)\?(.*)$ /?p=$1&$2&option=com_zina&Itemid=82 [L,R] 
+0

重寫規則不能在所有的工作,如果我逃 – Malfist 2010-10-13 16:41:53