我想知道如何使用Apache mod_rewrite选项将www.site.com?lang=lv&type=1&mode=2
重写为www.site.com/lv/1/2
。
答案 0 :(得分:1)
假设您实际上想要将/lv/1/2
重写为?lang=lv&type=1&mode=2
(我认为没有理由相反)并且没有其他重写处于活动状态,这应该可以解决问题:
RewriteRule ^/([^/]*)/([^/]*)/([^/]*)$ ?lang=$1&type=$2&mode=$3 [L]
也;如果你想将它们包含在你的URI中,你最好用更有用的信息替换那些神奇的数字。
编辑:如果您真的想要这样做,请参阅Matt S的回答。
答案 1 :(得分:0)
基本重写:
RewriteEngine On
RewriteRule http://www.site.com/?lang=(.+?)&type=(\d+?)&mode=(\d+?) http://www.site.com/$1/$2/$3 [L,R=permanent]
编辑:更改了重写标记以强制执行永久重定向
答案 2 :(得分:0)
您需要单独处理URI路径和查询。如果参数以相同的顺序出现,则可以执行以下操作:
RewriteCond %{QUERY_STRING} ^lang=([^&]+)&type=([^&]+)&mode=([^&]+)$
RewriteRule ^$ /%1/%2/%3? [L,R=301]
否则,在使用此规则之前,您需要按正确的顺序放置它们,或者一次采用每个参数。