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种,旧域名通过DNS
的CNAME
直接指向新域名,或者用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
车到山前必有路,我使用的是Cloudflare
的DNS
服务,众所周知Cloudflare
本职是CDN
内容分发网络,只需把DNS
解析的Proxy status
设置为Proxied
就可以使用它的CDN
服务。访问apqx.me
的流量会先经过Cloudflare
再到达托管网站的GitHub Pages
,此时Cloudflare
作为中间人是能够对经过的HTTP
请求返回301
重定向的。
请忽略我在A记录
里随意填写的8.8.8.8
,配置重定向后HTTP
请求永远不会到达这个IP
,可以任意填。
在Rules
中定义“中间人操作”。
将settings
设为Forwarding URL
,status code
为301
重定向,这样所有类似于apqx.me/path1/path2
的请求都会被重定向到mudan.me/path1/path2
。
旧域名重定向,搜索引擎在抓取网页时能看到301
跳转从而发现新域名,我也手动向Google
提交了mudan.me
,等URL
全部被收录后就可以放心删除旧域名。
apqx.me
我会保留一年作为缓冲,之前分享到微博等地方的链接会尽可能修改为新域名,无论是直接编辑微博还是添加一条提示域名变更的评论。一年后旧域名不再续费,它不再属于我,重定向也会随之失效,再见了👋。