用301重定向迁移 GitHub Pages
在一篇老文 # 迁移Hexo博客到GitHub Pages 中提到:
GitHub Pages可能是个单行线,只能迁出,不好再迁出了。简单研究了一下文档,它不允许用户修改Server配置,所以看起来无法完成301重定向。
但在迁移博客时,301重定向必不可少,它是保证站点迁移不损失搜索排名的关键所在。具体来说,在迁移到新站点之后,需要 手动修改 Google Search Console 的配置:
Do you lose credit for links when you redirect to new URLs?
No, 301 or 302 redirects do not cause a loss in PageRank
所以如何才是无损排名迁移 GitHub Pages 的正确方式?
前提
- 拥有一个域名
主要思路:利用 GitHub Pages 的自定义域名功能完成301重定向。
迁移步骤
假设我们要从 oldsite.github.io
迁移至
newsite.vercel.app
。你拥有域名
newsite.com
。
添加DNS解析记录
去你的域名托管服务商网站,比如
GoDaddy,增加一条解析记录:newsite.com
->
oldsite.github.io
添加自定义域名 (301 redirects)
GitHub Pages Repository Settings -> Pages -> Custom domain
添加自定义域名 (newsite.com
) 并且点
Save
.
页面会自动刷新:
Your site is live at https://newsite.com/
此时,使用 curl
访问
https://oldsite.github.io
,会发现站点已经被301重定向到自定义域名:
$ curl -I https://oldsite.github.io
HTTP/1.1 301 Moved Permanently
Connection: keep-alive
Content-Length: 162
Server: GitHub.com
Content-Type: text/html
permissions-policy: interest-cohort=()
Location: http://newsite.com/
...
所以现在你的网站可以同时从 https://newsite.com/
和 https://oldsite.github.io
访问,并且后者会被301重定向到
https://newsite.com/
。
更新DNS解析记录
再去你的域名托管服务商网站,更新域名记录到目标地址(此处是newsite.vercel.app
):
newsite.com
-> newsite.vercel.app
(vercel/azure websites/self hosting)。
现在你的站点已经可以同时从 https://newsite.com/
和 https://oldsite.github.io
访问,且所有流量都会被301重定向到新站newsite.vercel.app
。
再过些日子(半年以上),站点迁移就基本完成,由于使用了301重定向,搜索排名不受任何影响,此时可以安全地将老的 GithHub Pages 删除。当然,留着做301重定向也无妨~