我需要制作一些301重定向,如下所示:
/!go?ln=vector.dpsp&refs_=&m$id=27007&m$mid=27013 to http://domain.com/catalog/paz-320412-vektor.htm
/!go?ln=1223-15-57-1223.html&m$id=27148&m$mid=27940 to http://domain.com/catalog/gruzoviki/sedelnie-tyagachi-man
我在.htaccess中尝试了这段代码:
RewriteCond %{QUERY_STRING} ln=vector.dpsp&refs_=&m$id=27007&m$mid=27013
RedirectPermanent /!go http://domain.com/catalog/paz-320412-vektor.htm?
RewriteCond %{QUERY_STRING} ln=1223-15-57-1223.html&m$id=27148&m$mid=27940
RedirectPermanent /!go http://domain.com/catalog/gruzoviki/sedelnie-tyagachi-man?
但所有这两个网址都是第一个阻止,重定向总是进入http://domain.com/catalog/paz-320412-vektor.htm
我做错了什么?
答案 0 :(得分:0)
这里有一些问题。首先,您需要转义表达式中与{strong>%{QUERY_STRING} 匹配的$
符号,它是一个保留符号(用于反向引用等内容)。第二件事是RewriteCond
不会影响RedirectPermanent
。重写指令是mod_rewrite的一部分,Redirect指令是mod_alias的一部分,你不能将重写条件绑定到重定向,你需要使用RewriteRule
:
RewriteCond %{QUERY_STRING} ln=vector.dpsp&refs_=&m\$id=27007&m\$mid=27013
RewriteRule ^\!go$ http://domain.com/catalog/paz-320412-vektor.htm? [R=301,L]
RewriteCond %{QUERY_STRING} ln=1223-15-57-1223.html&m\$id=27148&m\$mid=27940
RewriteRule ^\!go$ http://domain.com/catalog/gruzoviki/sedelnie-tyagachi-man? [R=301,L]