【问题标题】:Redirect 404 to another domain with apache?使用 apache 将 404 重定向到另一个域?
【发布时间】:2010-11-14 10:17:54
【问题描述】:

大家好,有一个关于 apache 的问题。我有一个经过重新设计的网站,但我想捕获人们可能已添加书签或来自搜索引擎的所有“旧”链接,这些链接指向新域名下的旧网站。如何让 apache 仅将未找到的 404 重定向到旧站点?

TIA,

J

【问题讨论】:

  • 编辑: 感谢您迄今为止的回复!虽然@seth 的解决方案可行,但正在寻找特定于 apache 的解决方案。问题是我们有 OldSite,它目前位于 www.example.com 并移至 old.example.com,而 NewSite 将在 www.example.com 上运行。现在,我希望任何不在新站点(例如 www.example.com/oldpage.html)上的内容都可以访问 old.example.com。解决方案似乎是在新的 www.example.com 302 到 old.example.com 上的任何页面,然后在两者都不返回 404 的页面。我们不知道这些页面将在应用程序中,因为它是 CMS驱动。

标签: apache mod-rewrite http-status-code-404


【解决方案1】:

您可以将 404 文档设置为重定向用户的 CGI。

 ErrorDocument 404 /cgi-bin/redirect-to-other.cgi

【讨论】:

    【解决方案2】:

    另一个类似于@seth 提出的选项是添加处理程序,使其指向一个静态 html 页面,您可以使用该页面向用户解释发生了什么,并向他们提供选项。

    您可以包含一个元重定向,这样如果他们在几秒钟后没有执行任何操作,就会自动重定向。

    哪个选项最有效取决于您自己决定。

    【讨论】:

      【解决方案3】:

      您的旧域应该捕获所有响应并返回一个“301 永久移动”响应,新域在标头的“位置”字段中。 404 表示“未找到”,在这种情况下,它并不完全正确。

      【讨论】:

      • 如果我重定向到一个新的 url 这会起作用,但是它是新站点接管了旧的 url,而旧的站点转到了一个不同的 url。在这种情况下,永久移动 301 是行不通的。
      • 啊,所以您希望新站点上的 404 链接转发到新域中的旧站点...这是有道理的,但与我对您的问题的理解不同:)
      【解决方案4】:

      您应该首先确定要发送的状态代码。无法同时发送 404 状态代码和重定向。

      但赛斯确实已经提到了正确的方法,ErrorDocument directive

      # local path
      ErrorDocument 404 /local/path/to/error/document
      # external URI
      ErrorDocument 404 http://uri.example/to/error/document
      

      如果您使用本地路径,则会发送 404 状态代码。如果您使用绝对 URI,则会发送 302 状态代码(临时重定向)。

      如果你想发送 301 重定向:

      Redirect 301 / http://new.example.com/
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-05-03
        • 2019-01-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-15
        相关资源
        最近更新 更多