0%

hexo搬迁域名

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/blogwww.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
# !/bin/bash

function ergodic(){
# for file in ` ls $1 `
ls "${1}" | while read file
do
if [ -d "${1}/${file}" ] # 如果 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