【问题标题】:htaccess 301 redirect subdomain URL with variables to new domainhtaccess 301 将带有变量的子域 URL 重定向到新域
【发布时间】:2014-12-04 23:22:50
【问题描述】:

我已经搜索了将包含子域和变量的 URL 重定向到新域上的特定页面的解决方案。

这是我要重定向的 URL: http://en.domain.com/?page=ceramic-vase

这是我要重定向到的 URL: http://www.newdomain.com/en/ceramic-vase.php

我已经尝试过只重定向整个子域的基本方法,效果很好:

RewriteCond %{HTTP_HOST} ^en.domain.com$
RewriteRule ^(.*)$ http://www.newdomain.com/en/ [R=301,L]

然后我看到在 htaccess 和 mod_rewrite 中使用了状态 [OR] - 所以我认为 [AND] 也可以工作,但不幸的是:

RewriteCond %{HTTP_HOST} ^en.domain.com  [AND]
RewriteCond %{QUERY_STRING} ^page=ceramic-vase$
RewriteRule ^(.*)$ http://www.newdomain.com/en/ceramic-vase/ [R=301,L]

希望有人能帮忙?

【问题讨论】:

  • 默认情况下是 AND,所以尝试删除 [AND] ?
  • 谢谢@madpoet,我不知道。我将文件更新为:#RewriteCond %{HTTP_HOST} ^en.domain.com #RewriteCond %{QUERY_STRING} ^page=ceramic-vases #RewriteRule ^$ newdomain.com/en/ceramic-vase? [R=301,L] 这就像一个魅力!你能回答一下吗,这样我就可以关闭帖子了。谢谢:-)

标签: .htaccess redirect


【解决方案1】:

默认情况下是 AND,因此删除 [AND] 就足够了:

RewriteCond %{HTTP_HOST} ^en.domain.com
RewriteCond %{QUERY_STRING} ^page=ceramic-vase$
RewriteRule ^(.*)$ http://www.newdomain.com/en/ceramic-vase/ [R=301,L]

【讨论】:

    【解决方案2】:

    你可以使用这条规则:

    RewriteCond %{HTTP_HOST} =en.domain.com 
    RewriteCond %{QUERY_STRING} ^page=([^&]+)
    RewriteRule ^/?$ http://www.newdomain.com/en/%1/? [R=301,L]
    
    • %1 是来自查询参数 page 的反向引用
    • ? 最后会去掉之前的查询字符串。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-26
      • 1970-01-01
      相关资源
      最近更新 更多