利用Github pages实现域名的cname功能

利用Github pages 做重定向背景:

由于在一台服务器上有个多站点服务,并且各站点服务是以域名区分的。在域名注册商使用CNAME解析时,发现CNAME仅能做到解析到CNAME的目标域名的ip地址,并不能做域名的重定向,这样的话,以域名区分服务的站点配置下依然没法正常访问想要CNAME的网站服务。

解决办法:

利用Github pages做页面重定向,从而实现到”服务的CNAME”,具体做法如下:

1.在Github上新建一个项目,添加一个简单的名为index.html的html文件。

2.根据Github的自定义项目”custom domain”的的说明文档配置访问解析,例如我想在访问 http://www.nslover.com.cn 时重定向访问 http://nslover.com.cn 的服务时,先在项目的settings中开启自定义域名”www.nslover.com.cn”的设置,然后添加域名解析CNAME记录的”www”主机记录到GitHub的”nslover.github.io”(如果是主域名使用A记录,如果是子域名使用CNAME)。详见 https://help.github.com/en/github/working-with-github-pages/configuring-a-custom-domain-for-your-github-pages-site .

3.编辑index.html,使用html和js双保险的方式做页面重定向,例如我想在访问 http://www.nslover.com.cn 时重定向访问 http://nslover.com.cn 的服务时,在index.html中修改添加如下代码:

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<!-- 注释原html meta标签设置 -->
<!--<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> --> 
<!-- 使用html meta标签重定向 -->
<meta http-equiv="refresh" content="0; url=http://nslover.com.cn/"/> 
...
<script type="text/javascript">
 
    window.location.href = "http://nslover.com.cn"  //使用js重定向
 
</script>
</head>
...

待解析生效后,借用这个机制就可以实现服务的重定向了。