htaccess - 除非有任何查询,否则重定向

时间:2016-10-28 16:19:46

标签: .htaccess redirect

我将大多数网页(包括索引)从firstdomain.com重定向到seconddomain.com。

要重定向页面,我使用:

Redirect 301 /faq http://www.seconddomain.com/faq
Redirect 301 /contact http://www.seconddomain.com/contact

要重定向索引,我使用:

RewriteRule ^$ http://www.seconddomain.com/ [R=301,L]

现在,问题在于我希望保留http://www.firstdomain.com/?query=9328。使用上面的代码,它会重定向到http://www.seconddomain.com/?query=9328

我的问题是:除非包含查询,否则如何重定向索引?

2 个答案:

答案 0 :(得分:0)

使用RewriteRule使用查询字符串上的否定前瞻作为前缀RewriteCond,例如

RewriteCond %{QUERY_STRING} (?!query=9328)
RewriteRule ^$ http://www.seconddomain.com/ [R=301,L]

如果查询字符串包含模式,这将跳过重定向。如果您有有效的查询参数,例如otherquery等,那么您可能希望使用\b书挡锚定模式。

答案 1 :(得分:0)

这有效:

RewriteCond %{QUERY_STRING} ^$
RewriteRule ^$ http://www.seconddomain.com/ [R=301,L]

我不知道这是正确的还是最好的方式,但它会重定向索引,除非后面跟着查询字符串。