【问题标题】:Setting up 301 redirects for multiple domains merging to single domain为合并到单个域的多个域设置 301 重定向
【发布时间】:2020-03-08 12:33:42
【问题描述】:

我遇到了一个棘手的情况,四个不同的网站现在合并为一个网站。我正在尝试找出处理来自这些站点的旧 URL 的 301 重定向的最佳方法。

这是一个示例。假设我有这四个网站:

https://red.com
https://blue.com
https://green.com
https://magenta.com

他们现在都将住在https://red.com

每个网站都有一个“团队”页面...

https://red.com/team/
https://blue.com/team/
etc.

一旦我将所有网址都指向同一个地方,我想看看是否有人尝试输入之前的网址之一,并将他们定向到网站上的特定新位置,例如:

URL Entered: https://blue.com/team/
301 Redirect: https://red.com/blue/team/

URL Entered: https://green.com/team/
301 Redirect: https://red.com/green/team/

etc.

由于人们可能来自多个不同的域,因此我不能为此在 .htaccess 中使用标准的相对 301 重定向。我希望能够将这些其他域的 DNS 直接指向red.com,然后在那里处理 301 重定向逻辑。

关于如何处理这个问题的任何想法?

【问题讨论】:

  • 您可以使用 RewriteCond 从主机名中提取点之前的部分。 (但您必须小心,如果 foo.co.uk 之类的域在这里也可能是相关的 - 如果您不想相应地将它们重定向到 https://red.com/foo.co/team/,但只有 foo 在那里 - 那么您将必须开发一个稍微复杂一点的逻辑。)
  • 知道了!这通常看起来正确吗? # Blue team page RewriteCond %{HTTP_HOST} ^www.blue.com$ Redirect 301 /team https://red.com/blue/team/ # Green team page RewriteCond %{HTTP_HOST} ^www.green.com$ Redirect 301 /team https://red.com/green/team/ # Default team page Redirect 301 /team https://red.com/team/(我还不能真正测试这个,因为我还没有为这些域指定 DNS。此外,这里的重定向被简化了,将涉及比原始域更多的子目录和不同的名称,所以我没有无需担心 foo.co 示例。)
  • 您必须使用 RewriteRules 来执行实际的重定向,只有那些受 RewriteCond 影响,它们不适用于 Redirect 指令。
  • 哦,好吧!那么更像这样呢? RewriteCond %{HTTP_HOST} ^www.blue.com$RewriteRule "^/team$" "https://red.com/blue/team/" [R]
  • 是的,类似的。模式中的点应该被转义,否则它们意味着任何任意字符(尽管在这种特殊情况下可能不太可能发生。)但是,我不是每个域都使用这种条件规则组合,而是更多地考虑像@这样的东西987654332@(这就是为什么我提到像foo.co.uk这样的东西可能会额外处理。)

标签: .htaccess redirect dns


【解决方案1】:

您可以简单地使用 302 temporary redirect 而不是使用永久的 301。

** 另外不要忘记清除浏览器上之前的 301 重定向缓存;如果使用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-18
    • 1970-01-01
    • 2020-01-21
    • 1970-01-01
    • 2016-11-14
    • 1970-01-01
    • 1970-01-01
    • 2012-04-29
    相关资源
    最近更新 更多