簡體   English   中英

使用Apache mod_rewrite重寫多個變量的規則

[英]Rewrite rule on multiple variables using Apache mod_rewrite

我想知道如何使用Apache mod_rewrite選項將www.site.com?lang=lv&type=1&mode=2重寫為www.site.com/lv/1/2

假設您實際上想將/lv/1/2重寫為?lang=lv&type=1&mode=2 (我認為沒有相反的理由)並且沒有其他重寫處於活動狀態,則應該這樣做:

RewriteRule ^/([^/]*)/([^/]*)/([^/]*)$ ?lang=$1&type=$2&mode=$3 [L]

也; 如果希望將其包含在URI中,最好用更多有用的信息替換這些魔術數字。

編輯:如果確實是您想做的相反,請參閱Matt S的答案。

基本重寫:

RewriteEngine On
RewriteRule http://www.site.com/?lang=(.+?)&type=(\d+?)&mode=(\d+?) http://www.site.com/$1/$2/$3 [L,R=permanent]

編輯:更改了重寫標志以強制進行永久重定向

您需要分別處理URI路徑和查詢。 如果參數以相同的順序出現,則可以執行以下操作:

RewriteCond %{QUERY_STRING} ^lang=([^&]+)&type=([^&]+)&mode=([^&]+)$
RewriteRule ^$ /%1/%2/%3? [L,R=301]

否則,您將需要按照正確的順序排列它們,然后再使用此規則或一次獲取每個參數。

暫無
暫無

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

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