我的域名包含以下查询字符串:
http://example.com/?taxo=question&cata=foo&catb=bar&catc=more
我的目标是将?taxo=
之后的查询字符串转换为基于每个参数值的路径,如下所示:
http://example.com/questions/cata/foo/catb/bar/catc/more/
使用.htaccess
,这是我尝试过的:
RewriteCond %{QUERY_STRING}
RewriteRule ^taxo=(.*)&(.*)=(.*)&(.*)=(.*)&(.*)=(.*)$ $1/$2/$3/$4/$5/$6/$7 [L,R=301]
然而,这对我不起作用。我试图了解RewriteRule
行的错误,因为条件没有得到满足。
答案 0 :(得分:1)
您无法匹配RewriteRule
中的查询字符串。您应该使用QUERY_STRING
中的RewriteCond
变量来匹配并捕获查询字符串中的值:
RewriteEngine On
RewriteCond %{QUERY_STRING} ^taxo=([^&]+)&([^=]+)=([^&]+)&([^=]+)=([^&]+)&([^=]+)=(.*)$ [NC]
RewriteRule ^/?$ /%1/%2/%3/%4/%5/%6/%7? [L,R=301]
%N
语法对[{1}}中捕获的值进行反向引用。RewriteCond
将剥离以前的查询字符串。