介绍
今天把博客从blog.catx.me
迁移到了catx.me
,并关闭了原来的wordpress博客,算是完成了迁移的工作。
由于在过渡期也有若干个项目引用了博客的URL,所以迁移最后需要解决的问题是改变域名过后的重定向。
重定向包括两个方面:
- 通过原URL的访客不会死链,会自动跳转到新URL
- 搜索引擎能自动重新索引,不会降低页面排名
实现的原理就是在每个页面的<head>
部分添加两个标签:
1 | <meta http-equiv="refresh" content="0; url=http://new.domain.com/same/relative/url/of/old/site/"> |
第一个是给人看的,第二个是给机器看的。
前者会自动让浏览器跳转到新的域名,后者在搜索引擎的bot下次抓取页面的时候读取,重新索引到新的URL。
对于较大的站点,人肉在每个页面的标签很是麻烦,于是做了一个hexo的主题来实现这样一个功能(当然也有其他方式,不过主题是最简单的)。这并不是一个真正的主题,因为没有任何内容会被访问者看到。这个主题唯一的用途就是生成一个结构完全相同的站点,把每个页面重定向到一个新的域名上。
使用
以把在blog.catx.me
上的站点迁移到catx.me
上为例,创建repo、修改DNS、修改CNAME这些部署上的细节大同小异而又千变万化,不在此说明,过程如下:
- 创建一个hexo博客文件夹的副本
- 在副本文件夹中安装这个主题:
1 | $ git clone https://github.com/akfish/hexo-theme-redirect.git themes/redirect |
- 修改副本站点的
_config.yml
文件,使用主题:
1 | theme: redirect |
- 修改副本站点的
_config.yml
文件,添加如下行指定新域名:
1 | new_domain: catx.me |
- 修改副本站点的部署配置,部署到
blog.catx.me
(老域名) - 修改原站点的部署配置,部署到
catx.me
(新域名)
这样就完成了迁移工作,比如访问http://blog.catx.me就会自动跳转到http://catx.me
其它
如果你的站点部署在GitHub Pages上,老域名恰好在yourname.github.io
repo的CNAME
绑定过,那么你其它项目的GitHub Pages的URL也需要设置跳转。
比如有个项目foo
,原有的gh-pages地址就是http://blog.catx.me/foo
,那么就可以在副本站点中运行:
1 | $ hexo new page foo |
部署后就能实现跳转。需要注意的是,hexo生成的页面路径全是小写,如果服务器是区分大小写的,就需要手动在source
里修改成正确的形式。