0

我需要进行一些 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

我究竟做错了什么?

4

1 回答 1

0

这里有几件事不对劲。首先,您需要转义表达式中与%{QUERY_STRING}$匹配的符号,它是一个保留符号(用于反向引用之类的东西)。第二件事是 a不影响 a 。重写指令是 mod_rewrite 的一部分,而重定向指令是 mod_alias 的一部分,您不能将重写条件绑定到重定向,您需要使用:RewriteCondRedirectPermanentRewriteRule

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]
于 2012-07-11T17:43:54.790 回答