我已经尝试了几个如何执行此操作的示例,但没有任何工作,我担心这是因为查询字符串是基本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
在根域请求的一部分中检查查询字符串值时,我需要做些什么特别的事情吗?
答案 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]
?
用于丢弃目标的先前查询字符串。^/?$
是仅与目标网页匹配的正则表达式。