GitLab Pages 默认域名和 URL
- 层级:Free, Premium, Ultimate
- 版本:GitLab.com, GitLab Self-Managed, GitLab Dedicated
GitLab Pages 会根据您的命名空间和项目名称提供默认域名。 这些域名:
- 为项目站点、用户站点和群组站点生成可预测的 URL。
- 支持反映 GitLab 组织结构的分层路径。
- 创建唯一的域名,并在启用时自动重定向。
- 与自定义域名和 SSL/TLS 证书无缝协作。
- 可扩展到用户、群组和子群组项目。
本指南说明 GitLab Pages 如何为您的网站分配域名和 URL,以及如何相应地配置您的静态站点生成器。
GitLab Pages 默认域名
如果您使用自己的 GitLab 实例通过 GitLab Pages 部署您的站点,请与您的系统管理员验证您的 Pages 通配符域名。本指南适用于任何 GitLab 实例,前提是您将 GitLab.com 上的 Pages 通配符域名(*.gitlab.io)替换为您自己的。
如果您在 GitLab 上设置 GitLab Pages 项目,它将自动在 namespace.example.io 的子域名下可访问。
namespace
由您在 GitLab.com 上的用户名定义,或您创建此项目时所在的群组名称。
对于 GitLab Self-Managed,将 example.io 替换为您实例的 Pages 域名。对于 GitLab.com,
Pages 域名为 *.gitlab.io。
| GitLab Pages 类型 | GitLab 中项目的示例路径 | 网站 URL |
|---|---|---|
| 用户页面 | username/username.example.io |
http(s)://username.example.io |
| 群组页面 | acmecorp/acmecorp.example.io |
http(s)://acmecorp.example.io |
| 用户拥有的项目页面 | username/my-website |
http(s)://username.example.io/my-website |
| 群组拥有的项目页面 | acmecorp/webshop |
http(s)://acmecorp.example.io/webshop |
| 子群组拥有的项目页面 | acmecorp/documentation/product-manual |
http(s)://acmecorp.example.io/documentation/product-manual |
当启用 使用唯一域名 设置时,Pages 会从扁平化的项目名称和一个六字符的唯一 ID 构建唯一的域名。用户会收到 308 永久重定向 状态,将浏览器重定向到这些唯一域名 URL。浏览器可能会缓存此重定向:
| GitLab Pages 类型 | GitLab 中项目的示例路径 | 网站 URL |
|---|---|---|
| 用户页面 | username/username.example.io |
http(s)://username-example-io-123456.example.io |
| 群组页面 | acmecorp/acmecorp.example.io |
http(s)://acmecorp-example-io-123456.example.io |
| 用户拥有的项目页面 | username/my-website |
https://my-website-123456.gitlab.io/ |
| 群组拥有的项目页面 | acmecorp/webshop |
http(s)://webshop-123456.example.io/ |
| 子群组拥有的项目页面 | acmecorp/documentation/product-manual |
http(s)://product-manual-123456.example.io/ |
示例 URL 中的 123456 是一个六字符的唯一 ID。
例如,如果唯一 ID 是 f85695,最后一个示例将是
http(s)://product-manual-f85695.example.io/。
在通用域名下提供服务的命名空间和 HTTPS 方面存在一些已知的限制。 请务必阅读该部分内容。
要清楚地了解 Pages 域名,请阅读以下示例。
以下示例假设您禁用了 使用唯一域名 设置。如果您没有禁用,请参考前面的表格,将 example.io 替换为 gitlab.io。
项目网站示例
- 您在用户名
john下创建了一个名为blog的项目, 因此您的项目 URL 是https://gitlab.com/john/blog/。 在您为该项目启用 GitLab Pages 并构建您的站点后, 您可以在https://john.gitlab.io/blog/访问它。 - 您为您的所有网站创建了一个名为
websites的群组, 并在该群组中创建了一个名为blog的项目。您的项目 URL 是https://gitlab.com/websites/blog/。在您为该项目启用 GitLab Pages 后,站点可在https://websites.gitlab.io/blog/访问。 - 您为您的工程部门创建了一个名为
engineering的群组, 为您的所有文档网站创建了一个名为docs的子群组, 并在该子群组中创建了一个名为workflows的项目。您的项目 URL 是https://gitlab.com/engineering/docs/workflows/。在您为该项目启用 GitLab Pages 后,站点可在https://engineering.gitlab.io/docs/workflows访问。
用户和群组网站示例
- 在您的用户名
john下,您创建了一个名为john.gitlab.io的项目。您的项目 URL 是https://gitlab.com/john/john.gitlab.io。 在您为您的项目启用 GitLab Pages 后,您的网站 将发布在https://john.gitlab.io。 - 在您的群组
websites下,您创建了一个名为websites.gitlab.io的项目。您的项目 URL 是https://gitlab.com/websites/websites.gitlab.io。 在您为您的项目启用 GitLab Pages 后, 您的网站将发布在https://websites.gitlab.io。
通用示例:
- 在 GitLab.com 上,项目站点始终可在
https://namespace.gitlab.io/project-slug访问 - 在 GitLab.com 上,用户或群组网站可在
https://namespace.gitlab.io/访问 - 在您的 GitLab 实例上,将
gitlab.io替换为您的 Pages 服务器域名。向您的系统管理员询问此信息。
URL 和基础 URL
在某些静态站点生成器中,baseurl 选项可能有不同的名称。
每个静态站点生成器(SSG)的默认配置都期望在(子)域名(example.com)下找到您的网站,
而不是在该域名的子目录中(example.com/subdir)。因此,
每当您发布项目网站时(例如,namespace.gitlab.io/project-slug),
您必须在静态站点生成器的文档中查找此配置(基础 URL),
并将其设置为反映此模式。
例如,对于 Jekyll 网站,baseurl 在 Jekyll
配置文件 _config.yml 中定义。如果您的网站 URL 是
https://john.gitlab.io/blog/,您需要在 _config.yml 中添加以下行:
baseurl: "/blog"相反,如果您在分叉我们的默认示例之一后部署您的网站,
baseurl 已经这样配置了,因为那里的所有示例都是项目网站。
如果您决定将您的网站设为用户或群组网站,您必须从项目中删除此配置。
对于我们刚才提到的 Jekyll 示例,您必须将 Jekyll 的 _config.yml 更改为:
baseurl: ""如果您使用的是纯 HTML 示例,
您不需要设置 baseurl。
自定义域名
GitLab Pages 支持在 HTTP 或 HTTPS 下提供自定义域名和子域名。 有关更多信息,请参阅 GitLab Pages 自定义域名和 SSL/TLS 证书。