【发布时间】: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