【问题标题】:Need to redirect missing URLs to new host需要将丢失的 URL 重定向到新主机
【发布时间】:2023-03-13 20:57:01
【问题描述】:

我正在将博客从一个站点移动到另一个站点并重新利用原始站点。我想维护指向该网站的所有现有链接,并希望保持 SEO 页面排名。

旧网址:http://www.companyabc.com/2010/04/test.html

新网址:http://blog.companyabc.com/2010/04/test.html

我想这样做是在 www.companyabc.com 上使用自定义 404 错误页面,如下所示:

<html><meta http-equiv="REFRESH" content="0;url=http://blog.companyabc.com/%1"></html>

其中 %1 是原始 URI (/2010/04/test.html),但我不知道这是否可能。

另一种选择是使用 .htaccess 文件,如果找不到 URL,该文件会重定向,但我也没有让它工作。我确定我在重写条件下做错了什么:

RewriteEngine On
RewriteCond %{REQUEST_URI} !-l
RewriteRule ^(.*)\.html$ https://blog.companyabc.com/$1.html [R=301,L]

有什么建议吗?感谢您的帮助。

【问题讨论】:

  • 要通过 404 错误文档执行此操作,该文档必须实际上是一个脚本(如 PHP),以便您可以检查实际请求的 URL,并动态插入它。 (尽管在这种情况下,您可以让脚本直接发出 Location 标头,而不是生成带有元刷新的响应。)
  • 为什么您的 .htaccess 尝试使用 !-l 标志? // 该 RewriteRule 模式可能应该更具体一点 - 现在,您将重定向 每个.html 结尾的请求,但如果我只请求 http://www.companyabc.com/foobar.html,那可能会给出我是那个域下的 404,而不是重定向到其他地方,对吗?所以我可能会让该模式与您的博客条目 URL 结构的 YYYY/MM/ 前缀匹配。
  • 我是 .htaccess 的 100% 新手,所以我正在尝试我在 Google 中看到的示例。我将使用什么条件来测试 www.companyabc.com 上是否存在 URL,如果不存在则重写为 blog.companyabc.com?

标签: html .htaccess url redirect uri


【解决方案1】:

我使用以下 .htaccess 配置让它工作:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ http://blog.companyabc.com/$1 [R=301,L]

我从未尝试过 REQUEST_FILENAME 值,因为我错误地认为它仅适用于可以从网站下载的文件。我没有意识到它也适用于博客中的 .html 文件。

使用此解决方案,www.companyabc.com 上不存在的所有 URL 都将被重定向到 blog.companyabc.com,而不是显示 404 错误页面,这正是我正在寻找的。​​p>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-31
    • 1970-01-01
    • 2011-08-06
    相关资源
    最近更新 更多