By Z.H. Fu
https://fuzihaofzh.github.io/blog/
切问录开了一年了,打算换一个正式的域名,折腾了好几天,下面把这个过程记录下来。
## 一、在Godaddy上购买了新的域名
Godaddy是全球最大的域名代理商,上面的域名还是挺便宜,折合人民币大约50多一年(取决于域名的好坏,好域名可以很贵)。而且客服很不错,买了域名,第二天想重新换一个,给客服网上聊天说一下就好。这里要注意的是,购买域名后需要等一会才会生效。
## 二、设置DNS解析
进入Godaddy的域名管理界面,设置Nameservers 分别为 F1G1NS1.DNSPOD.NET 和
F1G1NS2.DNSPOD.NET ,点击保存。这里我们选择采用国内的dnspod来提供dns服务,避免国外的dns服务出现连接不上的情况。
接着进入www.dnspod.cn,点击添加域名,我们在这里添加两个DNS域名解析,分别是www.fuzihao.org和fuzihao.org,点击添加记录,在主机记录那一栏填上www,记录类型为CNAME,记录值填写github博客地址www.fuzihao.org。接着再添加第二条记录,与第一条类似,只是主机记录空着不填,这样他会自动变成@,表示为空。至此DNS设置完毕,等待一会即可生效。
## 三、发布到www.fuzihao.org/blog
我希望把博客放到域名下的一个/blog子目录里面,这和以往的方式略有不同,在这里我们可以采用Project Page的方法来实现。github里面可以设置个人主页和项目主页,之前用的都是个人主页,路径在 账户名.github.io 仓库的master上,这也是唯一一个可以挂在master分支上的主页,对于其它的项目,如果要挂载主页,则需设置在gh-pages分支上。下面我们通过修改配置文件来实现该设置,将配置文件_config.yml相应设置改为如下代码:
1 2 3 4 5 6 7 8 9
| url: http://fuzihao.org/blog root: /blog/
........
deploy: type: git repo: https://github.com/maplewizard/blog.git branch: gh-pages
|
完成设置后,打开github新建一个名为blog的仓库,并将刚才设置好的内容部署到这上面,即www.fuzihao.org/blog。
四、修改主页做好链接
接着,我们在source目录下新建一个叫CNAME的文件,在文件中填上我们的域名地址 www.fuzihao.org,重新生成,该文件用于告诉github是哪个域名。这个文件我们要传到我们之前的博客那个目录下,即www.fuzihao.org,为了验证该文件已正常上传,我们打开仓库即 www.fuzihao.org,点击Setting,在GitHub Pages下面,我们能看到 Your site is published at http://www.fuzihao.org. 而我们打开blog仓库,发现它的发布地方是 Your site is published at http://www.fuzihao.org/blog. ,通过这个中转我们实现了www.fuzihao.org/blog 到 www.fuzihao.org/blog 的关联。
除此之外,我们需要把以前的链接全部指向到我们新的地址上,打开public文件夹下的index.html,让它直接链接到新的地址:
1 2 3 4 5 6 7 8 9 10 11 12
| <!DOCTYPE HTML> <html> <head> <meta http-equiv="refresh" content="0;url=http://www.fuzihao.org/blog"> </head> <body> <meta charset="utf-8"> 切问录已经搬迁到新的域名:<a href="http://www.fuzihao.org/blog">http://www.fuzihao.org/blog</a> <h1><a href="http://www.fuzihao.org/blog">点击进入</a></h1> <body> </html>
|
我们以同样的方式修改所有的文章index.html,让他们都跳转到新的地址上,这里我们通过linux bash来实现,代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
function ergodic(){
ls "${1}" | while read file do if [ -d "${1}/${file}" ] then ergodic "${1}/${file}" "${2}/${file}" else local path="${1}/${file}" local name=$file echo $path $file echo -e "<!DOCTYPE HTML>\n<html>\n <head>\n <meta http-equiv=\"refresh\" content=\"0;url=http://www.fuzihao.org/blog${2}/\">\n </head>\n <body>\n <meta charset=\"utf-8\">\n切问录已经搬迁到新的域名:<a href="http://www.fuzihao.org/blog">http://www.fuzihao.org/blog</a>\n <h1><a href=\"http://www.fuzihao.org/blog/${2}/\">点击阅读文章</a></h1>\n <body>\n</html> " > "${path}"
fi
done } INIT_PATH="/home/maple/workspace/del/testhexo3/public/2014" REL_PATH="/2014" ergodic $INIT_PATH $REL_PATH
|
这里注意ls对文件夹有空格情况的处理。最后将这些内容上传到以前的博客路径www.fuzihao.org,迁移就基本上完成了。
参考文献:
[1]https://help.github.com/articles/adding-a-cname-file-to-your-repository/
[2]https://github.com/nanoac/blog/tree/master