301 根查询参数重定向

301 Redirect On Root Query Params

我已经尝试了几个示例来说明如何执行此操作,但没有任何效果,我担心这是因为查询字符串是基础 URL.

的一部分

这是我想做的事情:

Redirect http://example.com/?from=TEST_1 -> http://example.com/foo

Redirect 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

当它是根域请求的一部分时,我是否需要做一些特殊的事情来检查查询字符串值?

尝试将这 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 末尾的
  • ? 用于丢弃目标中先前的查询字符串。
  • ^/?$ 是仅匹配着陆页的正则表达式。