具有多个存储库的单个自定义子域的 Github 页面(使用路径)

ten*_*its 4 github github-pages

我有多个 Github 存储库。所有这些gh-pages都已启用,并且可以通过路径访问存储库,例如:

  • username.github.io/repository1,
  • username.github.io/repository2,
  • ...

现在我正在尝试创建一个自定义子域docs.foo.tld并让我的所有存储库都gh-pages可以通过

  • docs.foo.tld/repository1
  • docs.foo.tld/repository2
  • ...

我已经创建了一个CNAME条目docs.foo.tldusername.github.io

但是当我在 github 上的存储库设置docs.foo.tld中添加此自定义域 ( )时repository1gh-pages可以通过 直接访问docs.foo.tld,而不是通过docs.foo.tld/repository1

/repository1当对所有这些存储库使用相同的自定义子域时,我如何在路径段中使用/repository2所有这些存储库。

另请注意,当我尝试将此自定义子域添加到 时repository2,我收到异常,因为CNAME已被采用。

one*_*sec 6

我遇到了完全相同的问题,但根帐户是组织,而不是用户站点(但这没有区别)。解决方案非常简单(我进行了很多尝试和错误):

\n
    \n
  1. 如果尚未完成,请根据文档创建一个名为 的 git 存储库,创建特殊的组织/用户“伞”站点myorg.github.io
  2. \n
  3. 在该存储库的“设置”中,在“页面”选项卡下,选择您的自定义域docs.mydomain.com。看图片:
  4. \n
\n

伞式组织站点的页面设置

\n
    \n
  1. 此存储库的内容由您决定。就我个人而言,我使用VitePress和一个部署在分支根部gh-pages的小脚本。该脚本包括在项目根目录创建一个CNAME文件,内容为“docs.mydomain.com\”
  2. \n
  3. CNAME通过添加指向的条目来配置您的 Internet 提供商的 DNS 区域myorg.github.io.(请注意尾随点 \xe2\x80\x93 您的 IP 可能会也可能不会自动为您添加)。
  4. \n
  5. 返回 GitHub 伞存储库的页面设置,并检查子域是否已验证(可能需要几分钟)。
  6. \n
\n

这就是伞式文档网站的全部内容,其内容包含指向docs.mydomain.com/project1docs.mydomain.com/project2的链接。

\n

现在,这里有一个窍门:没有窍门。在您的所有实际项目中,只需部署您的文档即可。您可以在子docs文件夹中这样做,也可以不在子文件夹中这样做,在任一分支中,即在mastergh-pages一个分支中,这似乎并不重要。

\n

如果有的话,docs/url 的部分将被替换为project1/etc。不需要 CNAME,也不需要另一个自定义子域。

\n

这是我的一个项目的配置:

\n

我的一个项目的页面设置

\n

查看 GitHub 如何指示网站在哪个 URL 下发布。

\n

这是我的GitHub 组织及其伞式网站

\n

和结果:

\n\n

奖金。如果您有机会将项目配置为具有子子域(这就是我在找到解决方案之前尝试过的) \xe2\x80\x93\xc2\xa0 ,例如,https://project1.docs.mydomain.com上述配置也将“起作用”。也就是说,导航到https://docs.mydomain.com/project1 会将您重定向到https://project1.docs.mydomain.com

\n

互联网真是太神奇了,不是吗?

\n


小智 5

CNAME 和设置自定义域只能在 .github.io 存储库中完成。

其他存储库不应包含 a CNAME,并且您不应在其他存储库中设置自定义域。这些设置继承自 .github.io 存储库,在其他存储库中设置它们会覆盖根站点。

只需CNAME从项目存储库中删除记录,并从项目存储库的设置中删除自定义域即可。您可能需要将自定义域名添加回 .github.io 存储库,但之后您应该按照您的意愿进行所有设置。