当前位置: 首页 > news >正文

【教程】Github Page 添加自定义域名

目录

  • 前言
  • 购买域名
  • 验证自定义域名
  • 映射自定义域名
  • 记录类型
  • 注意点
  • 参考

前言

Github Page 是 Github 提供的一个可以从 Github 仓库上托管静态网站的功能服务。默认当你建立起一个仓库后,在对应会有一个可供浏览的静态网站,例如 https://eternaldeath.github.io/BlockchainHome/,其中,eternaldeath 是我的 Github 账户名字,BlockchainHome 是我的某个仓库名字。

然而很多时候我们希望能够使用自己的域名来替代默认的域名,以体现出自身网站的风格,而 Github Page 也提供了这种域名映射的能力,可以将自定义域名更换为自己的域名。

虽然 Github Doc 提供了指导文档,但该文档书写的不够友好,不适合新人阅读。

购买域名

购买域名一般分为两种情况,一种是希望国内能够访问的一种是国外能够访问的。国内的域名购买和使用比较麻烦,因为需要进行备案等认证操作,通常需要好几天的时间,而国外的主流域名服务提供商不需要备案,购买和部署流程只需要几个小时即可完成。

同时,由于 Github Page 是托管在国外的服务器上,因此即使使用国内购买的域名也无法完成映射。

在本例中,我选择从 GoDaddy 上购买域名,你也可以选择各种主流的域名服务提供商进行购买,这里贴一些可提供支付宝支付的平台,如,GoDaddy,Dynadot,Porkbun,NameSilo 等。购买的时候也有注意事项,就是选择主流大平台进行购买

具体的购买细节就不在这里展示了。

验证自定义域名

Github 提供了验证自定义域名的功能,该功能可以防止恶意对手发起域名劫持一类的攻击。所以首先我们先完成对你的域名的验证。

第一步,在任意 Github 页面点击右上角头像
第二步,在弹出的下拉框中,点击 Settings
在这里插入图片描述
第三步,在左侧栏找到 code,planning,and automation,并点击其中的 Pages选项
第四步,在右侧输入要验证的域名(如 aiproducthome.top),并点击 Add domain按钮
在这里插入图片描述
然后你会获得如下的记录,并继续按照该记录所示的步骤进行验证
在这里插入图片描述

接记录所需验证步骤,第五步,进入你购买域名网站,并进入你的域名的管理界面,虽然不同的域名服务提供商相关的界面不同,但大体它们的组成是相同。

这里以 GoDaddy 为例,进入到我的域名的 DNS 管理界面,并选择添加新的 DNS 记录(DNS records)。
在这里插入图片描述

在记录中,Type 选择为 TXT 类型(更多类型,参考“记录类型”小节),Name 为第四步中的 hostname,即 _github-pages 开头的内容,Value 是第四步中的 code,它是一串数字和英文组成的字符串。而 TTL 值选择默认即可。

最后点击 Save按钮。
当上述内容配置好后,返回第四步的验证页面,点击 Verify按钮。虽然理论上说的是需要 24 小时才可能验证成功,实际上不出意外,进需要几分钟即可完成验证。

映射自定义域名

第一步,还是在你的域名服务提供商的管理网页中,配置 A 记录类型,该类型用于将域名(例如,aiproducthome.top)指向 IP 地址。

还是点击 Add New Record。然后在弹出的配置框中进行配置,其中 Type 选择 A,Name 填写 @,Value 填写四个由 Github 提供的 IP 地址(这四个 IP 地址大家都一样,具体见 Github 官方文档),如下所示。TTL 默认,最后点击 Save按钮。

185.199.108.153
185.199.109.153
185.199.110.153
185.199.111.153

在这里插入图片描述
第二步,将子域名指向 IP 地址。

这里简单介绍一下 apex 域名和子域名,例如 aiproducthome.top 是 apex 域名,apex 就是顶级的意思,也就是顶级域名。而 www.aiproducthome.top 或 blog.aiproducthome.top 都被成为子域名,它们都属于 aiproducthome.top 域下的。

在第一步中我们其实配置的就是 apex 域名,而下面我们可以配置一些子域名,例如常见的 www 域名。

方法类似,同样是点击 Add New Record,然后 Type 选择 CNAME(含义见记录类型小节),Name 填写 www,Value 填写 <username>.github.io,TTL 默认即可。最后Save按钮。
在这里插入图片描述
到此,在域名服务商部分需要进行的 DNS 配置就完成了,上述内容需要花费一点时间在网络的各个 DNS 服务器上进行传播,接着我们回到 Github 进行相应的配置。

第三步,进入你的仓库界面,并点击上方的 Settings按钮。在左侧栏的 Code and automation 部分,点击 Pages 选项,在右侧的栏目中,将你的顶级域名(例如 aiproducthome.top)填写进去并点击Save按钮。

Github Page 将花费一点时间完成对 DNS 配置的检查。
在这里插入图片描述
回到同一页面的最上方,你会发现 Your site is live at 后面的部分变成了你的自定义域名。
在这里插入图片描述
至此,所有的任务就完成了,你可以通过顶级域名,子域名(www)或者之前的 github.io 的域名来访问,所有的内容都会跳转到自定义域名上。

记录类型

在前述的步骤中,我们在对域名的 DNS 配置中使用到了多种记录类型,这里简单阐述一下不同记录类型的作用。

类型作用
A(Address Record)将域名映射到 IPv4 地址,例如,将 www.example.com 映射到 192.168.1.1
AAAA(IPv6 Address Record)将域名映射到 IPv6 地址
CNAME(Canonical Name Record)域名别名映射到域名,例如,将 eternaldeath.github.io 映射到 aiproducthome.top

注意点

特别注意的是,由于你配置了新的域名,那么部分静态网站可能在加载资源的时候会找不到资源。例如,我使用 hexo 部署了静态网站,在_config.yml中配置的是默认的域名(即 github.io),因此为了重新加载资源,你需要配置成你现在的域名。具体可以借鉴我的这篇博客《【教程】hexo 更换主题后,部署在 Github Page 无 CSS 样式》。

参考

  1. Configure a custom domain

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • SQL Server和Oracle数据库的实时同步
  • python通过pyinstaller库进行打包,运行时提示缺少ODBC驱动
  • STM32智能仓库管理系统教程
  • 原创作品—数据可视化大屏
  • pytest系列——pytest_runtest_makereport钩子函数获取测试用例执行结果
  • TIA博途与威纶通触摸屏无实物仿真调试的具体方法示例
  • 用Vue3和Plotly.js绘制交互式3D散点图
  • 新浪API系列:支付API打造无缝支付体验,畅享便利生活(3)
  • python库 - modelscope
  • Java面试八股之MySQL索引B+树、全文索引、哈希索引
  • Springboot项目实训--day2
  • LabVIEW在半导体自动化测试中的应用
  • 植物大战僵尸杂交版全新版v2.2解决无法打开问题和全屏问题
  • 【删库跑路】一次删除pip下载的所有第三方库方法
  • In Search of Lost Online Test-time Adaptation: A Survey--论文笔记
  • 【Linux系统编程】快速查找errno错误码信息
  • 【mysql】环境安装、服务启动、密码设置
  • JSDuck 与 AngularJS 融合技巧
  • Js基础知识(四) - js运行原理与机制
  • js继承的实现方法
  • scrapy学习之路4(itemloder的使用)
  • Vue.js-Day01
  • WebSocket使用
  • 回流、重绘及其优化
  • 基于MaxCompute打造轻盈的人人车移动端数据平台
  • 数组大概知多少
  • 微信小程序开发问题汇总
  • Redis4.x新特性 -- 萌萌的MEMORY DOCTOR
  • ​​​【收录 Hello 算法】10.4 哈希优化策略
  • !!【OpenCV学习】计算两幅图像的重叠区域
  • #我与Java虚拟机的故事#连载19:等我技术变强了,我会去看你的 ​
  • (1)Android开发优化---------UI优化
  • (2)(2.4) TerraRanger Tower/Tower EVO(360度)
  • (2.2w字)前端单元测试之Jest详解篇
  • (39)STM32——FLASH闪存
  • (六)c52学习之旅-独立按键
  • (亲测有效)解决windows11无法使用1500000波特率的问题
  • (四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (算法)大数的进制转换
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • ./include/caffe/util/cudnn.hpp: In function ‘const char* cudnnGetErrorString(cudnnStatus_t)’: ./incl
  • .bat批处理(一):@echo off
  • .NET Core日志内容详解,详解不同日志级别的区别和有关日志记录的实用工具和第三方库详解与示例
  • .NET Framework 和 .NET Core 在默认情况下垃圾回收(GC)机制的不同(局部变量部分)
  • .net解析传过来的xml_DOM4J解析XML文件
  • .NET框架
  • .NET上SQLite的连接
  • @kafkalistener消费不到消息_消息队列对战之RabbitMq 大战 kafka
  • @NoArgsConstructor和@AllArgsConstructor,@Builder
  • [ 第一章] JavaScript 简史
  • [ 物联网 ]拟合模型解决传感器数据获取中数据与实际值的误差的补偿方法
  • [bzoj1324]Exca王者之剑_最小割
  • [Day 16] 區塊鏈與人工智能的聯動應用:理論、技術與實踐
  • [hdu 3652] B-number
  • [Hive] 常见函数