.htaccess 301重定向的问题

.htaccess 301重定向的问题,.htaccess,redirect,.htaccess,Redirect,我需要进行一些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-ty

我需要进行一些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?
但所有这两个URL都被第一个块捕获,重定向总是进入
http://domain.com/catalog/paz-320412-vektor.htm


我做错了什么?

这里有几件事做错了。首先,您需要对表达式中与%{QUERY\u STRING}匹配的
$
符号进行转义,它是一个保留符号(用于反向引用之类的内容)。第二件事是
RewriteCond
不会影响
重定向。重写指令是mod_Rewrite的一部分,重定向指令是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]