Help us learn about your current experience with the documentation. Take the survey.

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 证书