簡體   English   中英

如何將查詢字符串變量與mod_rewrite匹配?

[英]How can I match query string variables with mod_rewrite?

假設我有帶有查詢字符串參數的URL,如下所示:

/index.php?book=DesignPatterns&page=139
/index.php?book=Refactoring&page=285

使用mod_rewrite ,如何將它們重定向到這些SES URL?

/DesignPatterns/139
/Refactoring/285
RewriteCond %{QUERY_STRING} book=(\w+)&page=(\d+)  
RewriteRule ^index.php /%1/%2? [L,R=301]

因為RewriteRule只查看路徑(最多但不包括問號),所以使用RewriteCond捕獲查詢字符串中的值。

請注意, RewriteCond的匹配在%1%2等中捕獲,而不是$1$2等。

還要注意? RewriteRule結束時。 它告訴mod_rewrite不要將原始查詢字符串附加到新URL,因此最終得到/DesignPatterns/151 /DesignPatterns/151?book=DesignPatterns&page=151 of /DesignPatterns/151?book=DesignPatterns&page=151

[L,R=301]標志做兩件事:

  1. L確保不會處理其他可能匹配的規則(換句話說,它確保這是處理的“最后”規則)。
  2. R=301使服務器發回重定向響應。 它不是重寫,而是告訴客戶端再次使用新URL。 =301使其成為永久重定向 ,因此,除其他外,搜索引擎將知道用其索引中的新URL替換舊URL。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM