【问题标题】:301 redirect Blogger to another Host and keep Google rank301 将 Blogger 重定向到另一个主机并保持 Google 排名
【发布时间】:2015-09-06 14:46:39
【问题描述】:

首先,对于任何拼写错误,我深表歉意。我是法国人。

我希望你能帮助我解决一些可能有简单修复的问题,但我没有找到任何特定于我的案例的东西。

解释

我在 Blogger 平台上有一个网站,并在 Godaddy 注册了一个域名大约两年。但如今,由于这个平台的诸多限制,我对此并不满意。我在此博客中发布并索引了大约 300 篇文章。

好吧,我刚刚为自己创建了一个静态网站(包含许多 HTML 文件和一些 CSS/JS),并且还在 Godaddy 上购买了一个 Linux 主机(带有 cPanel 的豪华版)。我在父域(指向 Blogger)中创建了一个子域来测试这个新的静态站点。一切正常,准备就绪...

问题

正如我所说,我已经有 300 个帖子被编入索引。我以我想要的方式为所有这些 Blogger 帖子创建了新的 HTML 文件,并带有友好的 URL 和其他自定义项。为什么? Blogger 像这样显示我的链接:“mywebsite.com/2010/06/post-name.html”。我对这个新网站的意图是做一些类似“mywebsite.com/post-name.html”的事情。我已经在子域中设置了路径和其他所有内容。

我的问题是:如何将流量从旧网站 (Blogger) 重定向到新网站,而不会丢失 Google 排名并在访问旧链接时“绕过”404 Not Found 错误?

我在 Google 上进行了多次搜索,只找到了说明如何将 Blogger 迁移到 Wordpress 的教程。

我知道我不能只在 Blogger 上删除此站点,并且(也许)可以在 .htaccess 文件中执行某些操作来解决它。我现在必须“关闭” Blogger 并使用 301 重定向将访问者重定向到新主机,以防止 Google 因重复内容而惩罚我,对吗?

谷歌搜索,我找到了这段代码:

   <b:if cond='data:blog.url == &quot;http://example.com/2013/01/post-name.html&quot;'>
<meta content='0;url=http://example/post-name.html' http-equiv='refresh'/>
</b:if>

但这是一个从 Blogger 到 Wordpress 的教程。

上面的代码可以应用于我的情况吗?还是应该在 .htaccess 中逐个帖子创建重定向帖子?

感谢任何建议和帮助。

【问题讨论】:

  • 元刷新在保持搜索引擎排名方面是个坏主意(因为它不是“真正的”重定向)。至于 .htaccess – 你甚至可以在博客上使用它吗?
  • 感谢 CBroe 的回复。不,Blogger 不支持 htaccess。但是一旦域保持不变,我相信在我将 IP 指向新站点后,我可以在 Godaddy 托管提供的 .htaccess 中创建重定向。我错了吗?
  • 啊,是的,当然可以。 (根据您对问题的措辞,我认为您想更改域或其他内容,然后将旧域上的传入请求重定向到新域 - 在这种情况下,它需要“在”旧域上发生。 ) 但是你的具体问题是什么——使用 .htaccess 重写一般是如何工作的?有教程。如果您想了解更具体的内容 - 那么您需要在您的问题中更具体。
  • 对不起,CBroe。我在 Godaddy 注册了一个域,并在 Blogger 上使用它。但是,我创建了一个新站点(静态)并希望离开 Blogger 并使用我自己的服务器(也由 Godaddy 提供)。但是,主域不会被修改。我想知道的是如何关闭 Blogger 并将所有访问者重定向到新 URL(在这种情况下是友好的)而不丢失我在 Google 上的排名。我如何关闭 Blogger 并为新的 URL 重定向所有 URL(已编入索引)?什么是最好的解决方案?抱歉,如果我仍然无法澄清我的疑问。但我有点失落:(
  • 如果您的域到现在为止都指向博客,并且将来会指向您的新服务器,那么所有请求都会自动到达您的新服务器。因此,您所要做的就是将所有“旧” URL 重写为新服务器上的新目标。

标签: apache redirect blogger


【解决方案1】:

如果您的域之前一直指向博客作者,并且将来会指向您的新服务器,那么所有未来的请求都会自动到达您的新服务器。因此,您所要做的就是将所有“旧” URL 重写为新服务器上的新目标。

使用您在 cmets 中提到的 Redirect 指令,您应该能够实现这一目标。使用此技术,您需要为每个要重定向到新 URL 的旧 URL 使用 Redirect

如果所有您的旧网址都遵循/yyyy/mm/post-name.html 的模式,而您所有的新网址都只是/post-name.html 并且帖子名称仍然相同,您可能需要使用RewriteRule 改为:

RewriteEngine On
RewriteRule ^([0-9]{4})/([0-9]{2})/(.*)$ /$3 [R=301]

这将匹配以四位数字开头的所有传入请求(前导斜杠此时已被剥离),后跟一个斜杠,后跟两位数字和另一个斜杠,然后是“任何内容”那,并将其重定向到那个“任何东西”。它将自动以协议和服务器名称为前缀。 [R=301] 标志将使它成为一个带有 301 状态代码的重定向。

这样,您只需一条规则即可捕获所有这些旧帖子 URL,而不必为每个单独编写 Redirect 语句。

(如果您需要有关其工作原理的更多信息,请先咨询mod_rewite documentation。)

【讨论】:

  • 非常感谢CBroe。我无法在您的答案中添加 +1,因为我没有 15 个声誉(根据出现的错误)。抱歉 :( 至于 RewriteRule,在这种情况下,旧的 URls 遵循相同的格式(这是标准 Blogger)。但是,新网站的 URL 不会遵循相同的格式。我的网站一般是关于音乐的。Blogger 的 URL 是/yyyy/mm/musicname.html. 新站点看起来像:/artist/musicname.html 或 /news/postname.html 所以我不能使用 RewriteRule,对吗?如果我的 .htaccess 中有很多 Redirect 行我有什么问题吗?多谢一次,哈哈
  • 不,在这种情况下,您将无法使用RewriteRule 来执行此操作,因为它无法知道在新版本中使用哪个“艺术家” URL(因为旧 URL 不包含该信息)——因此您必须使用单独的 Redirect 指令静态设置它。我们在这里讨论了多少个旧 URL?对于几十个这完全没问题 - 如果它达到数百个或更多,那么最好将所有这些旧 URL 重写为服务器端脚本,该脚本可以在某种数据结构中查找新 URL ,然后从该脚本中发出重定向。
  • 嗯,我有 307 个旧 URL 需要重定向 :(... 那么,根据我的回复,服务器端脚本是合适的,对吧?你能给我一个参考(a请链接)这个脚本是如何工作的?
  • 这是一个如何使用 PHP 脚本的示例:saotn.org/redirect-old-url-new-url-send-404-page-php 它使用一个数组来定义旧相对 URL 到新相对 URL 的映射。如果它在数组中找到请求的 URL,它会重定向到带有 301 状态代码的新 URL,否则它会在脚本的下部输出状态代码 404 和 404 页面的 HTML 代码。
  • 您可以使用ErrorDocument 404 /path-to-script.php 进行设置,然后它将处理您的服务器找不到要服务的文档的所有请求,或者RewriteRule ^([0-9]{4})/([0-9]{2})/.* /path-to-script.php - 然后它将只处理请求对于遵循该特定模式的 URL。
【解决方案2】:

如果您尝试将一个 url 重定向到现有页面上的另一个域

喜欢http://some-domain.com/2017/abc.htmlhttp://another-domain.com/2017/abc.html

您可以使用以下 javascript

<script>
var url = location.href;
var newurl = url.replace('some-domain.com','another-domain.com';);
location.href=newurl;

</script>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-13
    • 2014-09-07
    • 2011-01-30
    • 2016-07-30
    • 2017-05-08
    • 1970-01-01
    • 2019-07-07
    • 2018-12-29
    相关资源
    最近更新 更多