为GitHub用户页面与项目页面配置自定义域名的问题
解决GitHub Pages自定义域名配置问题
我来帮你一步步搞定这三个需求:根域名重定向到www、www指向用户主页、项目子域名指向项目页面。
1. 根域名(mydomain.tld)重定向到www
你当前设置的根域名A记录指向GitHub官方IP是正确的,但还需要补充重定向规则:
- 登录你的DNS服务商后台,找到URL重定向/转发功能
- 添加一条规则:将
@(根域名)重定向到www.mydomain.tld,选择301永久重定向(对SEO更友好)
如果你的DNS服务商不支持URL重定向,也可以在user.github.io仓库的index.html里添加一段JS实现跳转(不过DNS层面的重定向效率更高):
<script> if (window.location.hostname === 'mydomain.tld') { window.location.href = 'https://www.mydomain.tld' + window.location.pathname; } </script>
2. 项目子域名(myproject1.mydomain.tld)的配置
你说的没错,CNAME记录不能指向带路径的地址,但GitHub Pages支持直接给项目仓库绑定子域名,只需两步操作:
第一步:添加DNS记录
在你的DNS区域中新增一条CNAME记录:
myproject1 1800 IN CNAME user.github.io.
注意末尾的.不能省略,确保是绝对域名格式。
第二步:配置GitHub项目仓库
打开你的myproject1仓库:
- 进入Settings → Pages
- 在Custom domain输入框中填写
myproject1.mydomain.tld - 勾选Enforce HTTPS(DNS生效后即可启用,保障访问安全)
- 点击Save
等DNS解析生效(通常10-30分钟,慢的话可能需要几小时),访问myproject1.mydomain.tld就会直接指向你的项目页面,无需额外路径。
3. 验证配置是否生效
- 用
nslookup命令检查DNS解析:
确保根域名返回GitHub的两个IP,www和myproject1子域名返回nslookup mydomain.tld nslookup www.mydomain.tld nslookup myproject1.mydomain.tlduser.github.io对应的IP。 - 直接访问各个域名,确认跳转和页面指向都正常。
小提醒:如果开启了HTTPS,GitHub需要时间生成证书,这个过程可能需要10-20分钟,期间访问可能出现证书错误,耐心等待即可。
内容的提问来源于stack exchange,提问作者mpiot




