问题描述
因为我现在拥有两个域名,.com
域名打算长时间使用,.xyz
域名将在2022年十一月份到期,到期后将不再使用。但在到期之前,我想将这两个域名都映射到我的博客,而一个GitHub Pages只能有一个CNAME
文件,也就是只能设置一个域名映射,而要实现两个域名都映射到同一个GitHub Pages应该怎么办呢?
解决方法:创建一个中转仓库
我们需要在GitHub上再新建一个仓库,用来中转旧域名中的访问到新的域名。
1. 新建随意名字的仓库
我们新建一个仓库。新建的时候实际上可以无所谓命名,因为这个仓库里面不会真的有内容,多数时候访问实际上是404的。但我们创建它只是为了前面提到的那个CNAME文件,告诉GitHub Pages我们有两个域名而已。
这里,我创建了一个名为oldblog
的仓库,正常情况下,访问这个仓库GitHub Pages的域名前缀为xxxxxxx.github.io/oldblog
。
2. 为此仓库添加 GitHub Pages 服务
接着,按照平时去创建GitHub Pages服务的方法往这个仓库提交代码。
例如可以在仓库根目录放一个 _config.yml
文件(这是网站的配置文件),然后直接提交:
1 | title: XXXXXX |
当有了一个分支和简单的网站配置文件后,就可以直接使用GitHub Pages服务了。在这里,我们将自定义域名填写成旧的域名。
这样,当我们在域名服务器中将旧域名设置到xxxxxx.github.io时,GitHub Pages至少知道应该使用这个仓库里的GitHub Pages来显示。
此时这个库的根目录将会自动生成一个CNAME
文件,用来存放映射的域名。
3. 创建用于跳转的 404 页面
然而我们并不打算在这个仓库里真的放代码/网页,于是在根目录放一个404.html
文件:
1 |
|
现在,仓库里面是这样的:
4. 配置 DNS
最后检查你的 DNS 配置:
旧域名 -> xxxxxx.github.io
新域名 -> xxxxxx.github.io
到现在,就全部完成。以我的网站为例,点击链接 https://hanqingjiang.xyz 会短暂看到一个“正在重定向……”的提示,然后随即跳转到新域名 https://hanqingjiang.com。
(这一跳转的例子在2022/11/26之前可用,在那之后旧域名将停止使用,输入旧域名进入的页面将不可知。)
原理
一个GitHub Pages的仓库只能有一个CNAME
文件,也即我们只能告知GitHub我们的一个合理域名。要让GitHub Pages支持两个域名,我们不得不建两个仓库,其中第二个仓库的地址为xxxxxx.github.io/repo-name
。在第二个仓库中,我们故意什么都不放,这样会自动触发404.html
,我们将404页面设置为跳转到新的域名即完成了我们的目的。
参考链接
本文链接: https://hanqingjiang.com/2022/07/26/20220726_mappingOfMultipleDomainNames/
版权声明: 本作品采用 CC BY-NC-SA 4.0 进行许可。转载请注明出处!
