2012-06-26 60 views
1

我用我的.htaccess中的重寫規則查詢字符串,但每當我參數添加到字符串它使重寫失敗mod_rewrite的不工作的時候我加

RewriteRule ^c([0-9]+)/[a-zA-z0-9\-]+$ category.php?id=$1 [L] 

例如:

如果我去下面,一切工作正常:

c87/newest-post 

但是如果我去:

c87/newest-post?param1=this&param2=that 
c87/newest-post/?param1=this&param2=that 

它重定向不正確並失敗。我認爲它與QSA標籤有關,但是由於我對重定向的瞭解不多,我不知道我做錯了什麼。

回答

1

,因爲您指定的替換URL查詢字符串的QSA標誌是必需的:

當更換URI包含查詢字符串,默認行爲重寫規則的 是放棄現有的查詢字符串,並用新產生的 代替它。使用[QSA]標誌會導致查詢 字符串被合併。

對於尾部斜線,您需要額外的調整。建議的重寫規則是:

RewriteRule ^c([0-9]+)/[a-zA-z0-9\-]+/?$ category.php?id=$1 [QSA,L] 
# c87/newest-post?param1=this&param2=that -> category.php?id=87&param1=this&param2=that 
# c87/newest-post/?param1=this&param2=that -> category.php?id=87&param1=this&param2=that