[英]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]
標志做兩件事:
L
確保不會處理其他可能匹配的規則(換句話說,它確保這是處理的“最后”規則)。 R=301
使服務器發回重定向響應。 它不是重寫,而是告訴客戶端再次使用新URL。 =301
使其成為永久重定向 ,因此,除其他外,搜索引擎將知道用其索引中的新URL替換舊URL。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.