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相应设置改为如下代码:
| 12
 3
 4
 5
 6
 7
 8
 9
 
 | url: http://fuzihao.org/blogroot: /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,让它直接链接到新的地址:
| 12
 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来实现,代码如下:
| 12
 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