GitHub Pages绑定自己的域名,推荐把根域和www一起配置,再选一个作为主地址。网站已经能通过默认地址访问,就可以开始;无需为了换域名重建仓库。下面用个人账号的公开站点演示,仓库admin权限和域名DNS修改权限都要在手。
根域和www选哪个做主地址?
示例域名是example.com,示例账号是demo-user。本文选www.example.com作为访客最终看到的地址,根域负责跳过去。示例不对应真实待配置站点,填写时要替换这两个值。
GitHub的域名说明推荐使用www子域。通过CNAME关联后,它不直接依赖某组服务器IP。喜欢短网址也可以选根域为主,两边正确解析后,跳转方向会跟随仓库设置。
只想给博客单独使用blog.example.com,则配置那个子域即可。不要为了博客顺手覆盖已有公司主页的根域。还在决定静态网站放哪里的,可以先看Cloudflare Workers静态网站部署。
TXT验证和仓库绑定在哪里做?
第一步:在个人账号验证根域。 点击右上角头像 → Settings → Pages → Add a domain,输入example.com并点Add domain。照页面生成的名称与值添加TXT记录,解析生效后回到GitHub点Verify。
这是官方推荐的安全步骤,并非绑定域名的必填条件。入口在账号设置,不在仓库设置。验证会覆盖直接子域,因此验证example.com也保护www.example.com;成功后保留TXT。官方验证教程还给出了组织账号的入口,组织站点应由组织所有者操作。
第二步:给仓库关联主域。 打开实际发布网站的仓库 → Settings → Pages,在Custom domain填写www.example.com并保存。只写域名,不加协议或页面路径。按官方管理顺序,保存关联后再把访问用的DNS指向Pages,避免域名先指过去却无人认领。
DNS记录照哪一行填?
第三步:打开当前DNS服务商的解析面板。 本例选择四条A记录处理根域,www单独加一条CNAME。表中的主机记录写法以常见面板为例;有的面板要求完整域名,保存后检查其显示的实际名称。
| 要配置的地址 | 类型及主机记录 | 记录值或填写规则 |
|---|---|---|
| example.com | A,@,分别建四条 | 185.199.108.153、185.199.109.153、185.199.110.153、185.199.111.153 |
| www.example.com | CNAME,www | demo-user.github.io |
| 根域的另一种方案 | ALIAS或ANAME,@ | demo-user.github.io;替代四条A,不叠加 |
数值来自上面的官方管理页。只有服务商支持时才选ALIAS或ANAME。CNAME目标不能填example.com,也不能带仓库名;即使原项目网址末尾有项目路径,DNS仍只认主机名。
准备替换旧解析时,只处理本次迁移的主机记录。邮箱MX、验证TXT和其他业务子域不要一起清空。不使用星号通配解析。本文采用IPv4方案;若已有AAAA指向旧主机,移除这条旧解析;需要IPv6时按官方表改为Pages地址。新增A不会覆盖AAAA。
填写时可以把三张页面并排:账号页回答“这个域名归谁”,仓库页回答“访问它时显示哪个项目”,解析页回答“请求送到哪台服务”。例如账号页已验证,仓库却填了根域,最终地址就不会符合本例的www选择。此时要改的是仓库主域,没必要删除TXT重做归属验证。
若公司主页继续放在原主机,表里的根域方案就不适用:只新增博客子域对应的CNAME,再到博客仓库填同一个子域。把表当作互斥方案和字段对照,不要把每一行都加进面板。
两种CNAME为什么容易混淆?
DNS面板里的CNAME表示“这个名字指向哪个名字”;仓库里的CNAME文件表示“这个站点使用哪个域名”。本例前者填demo-user.github.io,后者填www.example.com,方向恰好不同。
从分支发布时,GitHub会添加CNAME文件。下次把本地生成结果推回发布源,也要保留它。文件名全部大写,只放一个域名。使用自定义GitHub Actions工作流发布则无需该文件,已有文件会被忽略。这是官方对两种发布方式的区别,不要看到别人仓库有文件就照搬。
DNS通过,为什么HTTPS还没好?
第四步:等证书就绪并开启HTTPS。 回到仓库Pages,待Enforce HTTPS可选后勾选。DNS变更传播可能需要24小时,该选项也可能最多等待24小时;它们不是每次固定耗时。
解析检查成功后,GitHub还会向Let’s Encrypt申请TLS证书并部署。HTTPS说明明确区分这两个阶段。等待超出范围时,检查根域有无额外旧A、AAAA、ALIAS记录;已有CAA限制的域名还须允许letsencrypt.org签发,见证书排错条件。
还要区分“一个项目单独绑定”和“个人主页统一换域名”。官方说明的默认行为是:个人或组织主页设置自定义域后,未单独设域名的项目站点会沿用这个域名,并保留项目路径。手里有多个演示项目,发布前把各项目链接也打开一次;只希望一个项目搬家的,就在那个项目仓库单独设置。企业版私有发布的项目站点不受上述域名继承影响。
上线检查四个入口
依次访问根域与www的HTTP、HTTPS地址。本例四个入口最终都应到HTTPS的www主域。再打开一篇内页,确认图片、样式和菜单链接正常;首页能开不代表资源地址正确。
如果浏览器指出混合内容,检查HTML里的图片、CSS和脚本是否仍走HTTP,并确认资源支持HTTPS后修改引用。本文按官方文档整理,未实际迁移域名,也未验证各DNS服务商的代理模式。
地址稳定后,可接着配置Umami按钮与UTM统计;其他网站运维工具放在工具栈目录。