2013-01-12 15 views
1

我有以下重寫規則:IIRF/APACHE REWRITE REMOVE查詢字符串不具條件

RewriteRule ^/events$ /pagebase.php?pbid=3627 [QSA,L,I] 
RewriteRule ^/events-list$ /pagebase.php?pbid=3663 [QSA,L,I] 
RewriteRule ^/bob2013$ /pagebase.php?pbid=3688 [QSA,L,I] 
RewriteRule ^/contact-us$ /pagebase.php?pbid=3634 [QSA,L,I] 
RewriteRule ^/detail$ /pagebase.php?pbid=3890 [QSA,L,I] 

,直到我需要查詢字符串傳遞哪些工作的偉大。

所以,如果我輸入

http://www.domain.com/events 它完美。

但是,如果我在

http://www.domain.com/events?type=1

類型,然後重寫,因爲它不符合「事件」再失敗。

但是,如果我刪除美元符號,那麼它工作正常。查詢字符串類型正確傳遞。

像這樣。

RewriteRule ^/events$ /pagebase.php?pbid=3627 [QSA,L,I] 

但是,問題是,如果有人輸入事件列表的URL。

http://www.domain.com/events-list

重寫相匹配的 「事件」 頁面顯示該頁面。

基本上,我需要知道如何解決這個問題。

+0

你有沒有測試過這個?由於RewriteRule只匹配路徑(不包括查詢字符串) – Gerben

回答

1

最簡單的解決方案是相應地排列規則:通用規則之前的特定規則。

由於第一規則(不$在端部)包括第二規則,把所述第二規則的第一個之前:

RewriteRule ^/events-list /pagebase.php?pbid=3663 [QSA,L,I] 
RewriteRule ^/events  /pagebase.php?pbid=3627 [QSA,L,I] 

現在開始/events-list任何URL將被重寫爲pbid=3663

然而,爲了防止類似的URL從/events-anything匹配,最好是包括可選的查詢字符串的規則匹配:

RewriteRule ^/events-list(\?.*)?$ /pagebase.php?pbid=3663 [QSA,L,I] 
RewriteRule ^/events(\?.*)?$  /pagebase.php?pbid=3627 [QSA,L,I] 
相關問題