前提及尝试

我们使用GitPages搭建博客,但是它只支持一个域名也就是要么@,要么A,比如绑定cai.dog之后使用www.cai.dog去访问是不行的。

那么我们使用CNAME跳转可以吗?

答案是使用CNAME域名跳转的方式是不行的,很多文章写的都不标准,这种方式可以跳到自己的服务器的一些服务,但在GitHub Pages是不行的。

另一个思路

另一个思路是使用cloudflare的服务,让你的域名解析服务器都指向cloudflare,然后它再把你的域名解析到你想要的另一个地址。这种方式也是一个极好的方式。

具体情况参见

www.cloudflare.com

通过Nginx实现跳转

因为我有一个海外主机,并且安装了Nginx,可以通过它直接把我们的其它域名跳转到另一个域名

Nginx下面增加server配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
server {
listen 80;
server_name www.pengjugame.com;
rewrite ^/(.*)$ https://cai.dog/$1 permanent;
}
server {
listen 80;
server_name pengjugame.com;
rewrite ^/(.*)$ https://cai.dog/$1 permanent;
}
server {
listen 80;
server_name www.cai.dog;
rewrite ^/(.*)$ https://cai.dog/$1 permanent;
}

我将我在国内域名服务商的pengjugame.com的A记录和@记录都指向些服务器的IP,然后此IP的服务再跳转到GitPages的博客。

另外,由于另一个域名服务商同样有多个记录,因为我是@绑定的GitPages,另一个A记录也绑定到此IP,那么这些个域名都会通过此Nginx服务器跳转到真正的博客地址。

开启Https访问

由于我们的直接跳转一般@记录都是跳到abc.xxx,但这时候有的浏览器可能会报证书的问题,GitHub Pages现在支持Https证书,我们最好还是把它开启。

具体位置在仓库xxx.github.io下面的Settings里面搜索HTTPS,会看到在绑定域名的下面有一个Enforce HTTPS 的选项,如果是刚创建的仓库,可能要过几个小时才有,把这个勾选即可。

我们在访问abc.xxx的时候,会自动添加证书https://abc.xxx