2023年,我换了新域名「牡丹」

七年,博客域名一直是apqx.me,从GoDaddy购买,每年续费168元就可以一直拥有它。

apqx当然不是随机的无意义字符,其实是小时候喜欢的长弓·阿帕奇武装直升机的拼音缩写apq。至于后面的x,是因为当我决定要注册人生第一个域名apq.me时意外发现它竟然已经属于别人,明明几个月前还是未注册状态,只能遗憾在后面加一个x变成apqx.me

域名

对非开发者,需要补充一些关于域名是什么的简单解释。服务器是现代互联网的基础设施,网站搭建在服务器上,在网络世界里只能通过IP地址去定位到一台特定服务器。使用HTTP协议可以在浏览器中输入一串http://185.199.109.153:80字符来访问搭建在IP地址为185.199.109.153的服务器上监听80端口的网站,全是数字很难记对吧,所以才有域名的概念。

域名可以由字符、数字甚至汉字组成,有意义的词自然比无规则数字清晰简洁,比如都熟悉的百度,它的域名是baidu.com,在浏览器中输入就能跳转到百度网站。这个过程中浏览器其实做了2件事,先去DNS域名服务器查询域名对应的IP地址,再去访问IP对应的服务器,当然中间有很多复杂细节需要更多协议处理,但总之,域名起到的就是这个作用。

由常用词组成的优质域名一直是不菲的资源,如opera.com这种在域名出现时就会被抢注,后来者想要拥有只能高价从原主人那里购买。除常见的.com之外,近年也开放了诸如.io.xyz.me.love等很多新顶级域名,尤其.me非常适合做个人博客,而且相比.com.cn也比较容易捡到“好词”。

牡丹

“牡丹”是一个对我而言十分特殊的词,源于昆曲《牡丹亭》的影响,所以真的幸运,在我之前居然没有人注册过mudan.me。它相比抽象中二的apqx.me更有纪念意义,纪念我的整个前青春时代,纪念我从北方到南方的迁徙,纪念我的世界从灰暗向多彩的渐变。

杭州 西湖 日落 夕阳

如此,更换域名势在必行,有2个问题需要解决:

  • 旧域名重定向
  • 搜索引擎重新收录

apqx.me已经使用太久,过去分享出去的链接都是这个域名,我当然希望它们在更换域名后依然能跳转到正确页面而不至于直接失效。解决方式有2种,旧域名通过DNSCNAME直接指向新域名,或者用HTTP访问旧域名时插入一次301重定向到新域名。

这个博客托管在GitHub Pages上,仓库根目录下有一个CNAME文件标明网站域名。为Pages配置过自定义域名应该知道,交给它托管的网站DNS都指向同一个入口服务器,Pages会在这里检测目标域名,与记录的已知域名对比,从而定位到要访问的网站。这种机制下,如果DNS添加一条CNAME记录,把apqx.me指向mudan.me,相当于把apqx.me指向GitHub Pages的那台入口服务器。其检测到目标域名是apqx.me,而在Pages所有仓库的CNAME文件中找不到该域名,会直接返回404页面,所以这种方式在这种情况下是不可行的。

只剩下另一种方案,但是GitHub Pages并不支持对HTTP协议的配置,所以并不能对请求直接返回301重定向。一个思路是在Pages上为apqx.me创建一个空白跳转站,用JavaScript把来访URL手动跳转到mudan.me。这倒不是不可以,只是有点“糙”。

Cloudflare

车到山前必有路,我使用的是CloudflareDNS服务,众所周知Cloudflare本职是CDN内容分发网络,只需把DNS解析的Proxy status设置为Proxied就可以使用它的CDN服务。访问apqx.me的流量会先经过Cloudflare再到达托管网站的GitHub Pages,此时Cloudflare作为中间人是能够对经过的HTTP请求返回301重定向的。

请忽略我在A记录里随意填写的8.8.8.8,配置重定向后HTTP请求永远不会到达这个IP,可以任意填。

cloudflare dns

Rules中定义“中间人操作”。

cloudflare rules 301

settings设为Forwarding URLstatus code301重定向,这样所有类似于apqx.me/path1/path2的请求都会被重定向到mudan.me/path1/path2

cloudflare rules 301

旧域名重定向,搜索引擎在抓取网页时能看到301跳转从而发现新域名,我也手动向Google提交了mudan.me,等URL全部被收录后就可以放心删除旧域名。

apqx.me我会保留一年作为缓冲,之前分享到微博等地方的链接会尽可能修改为新域名,无论是直接编辑微博还是添加一条提示域名变更的评论。一年后旧域名不再续费,它不再属于我,重定向也会随之失效,再见了👋。

arrow_upward