301重定向根查询参数

时间:2015-01-13 21:59:58

标签: .htaccess mod-rewrite redirect rewrite http-status-code-301

我已经尝试了几个如何执行此操作的示例,但没有任何工作,我担心这是因为查询字符串是基本URL的一部分。

以下是我想做的事情:

  

重定向http://example.com/?from=TEST_1 - > http://example.com/foo

     

重定向http://example.com/?from=TEST_2 - > http://example.com/bar

以下是我的尝试:

RewriteEngine On
RewriteCond %{QUERY_STRING} from=TEST_1
RewriteRule (.*) /foo [L,R=301]

不幸的是,上述规则没有任何影响。如果我将规则更改为静态(见下文),它的效果很好:

Redirect 301 /foo /bar

在根域请求的一部分中检查查询字符串值时,我需要做些什么特别的事情吗?

1 个答案:

答案 0 :(得分:2)

请尝试将这两条规则作为RewriteEngine行下面的第一条规则。

RewriteEngine On

RewriteCond %{QUERY_STRING} ^from=TEST_1$
RewriteRule ^/?$ /foo? [L,R=301]

RewriteCond %{QUERY_STRING} ^from=TEST_2$
RewriteRule ^/?$ /bar? [L,R=301]
    目标URI末尾的
  • ?用于丢弃目标的先前查询字符串。
  • ^/?$是仅与目标网页匹配的正则表达式。