【问题标题】:Can I have my GitHub Pages index.html in a subfolder of the repository?我可以将我的 GitHub Pages index.html 放在存储库的子文件夹中吗?
【发布时间】:2014-10-08 19:57:03
【问题描述】:

我正在尝试使用 GitHub 页面来托管 Doxygen 网站。理想情况下,我希望能够将生成的文件和目录推送到 GitHub,而无需进行任何调整。

然而,这意味着我的 index.html 位于存储库的子文件夹中,并且 GitHub Pages 没有提取它(当我尝试访问 Pages 站点时得到 404)。有没有办法让 GitHub 识别子文件夹中的 index.html?

这是一个项目站点。

【问题讨论】:

    标签: github doxygen github-pages


    【解决方案1】:

    在根目录创建一个虚拟的 index.html 并将其放在您的标题中:

    <meta http-equiv="refresh" content="0; url=https://repo.github.io/folder/index.html">
    

    请务必更改目标网址。这会立即从 index.html 重定向到您的文件夹/index.html。

    【讨论】:

      【解决方案2】:

      也许你想推一个子树。例如,假设您有 build/dist 目录,并且在那里构建了 Doxygen 站点。

      构建后,确保提交该文件夹中的所有更改,然后执行以下操作。

      git subtree push --prefix build/dist origin gh-pages
      

      重要的是,您在 gh-pages 分支上没有任何东西,无论是本地还是原产地。

      所有功劳归于:https://gist.github.com/cobyism/4730490

      最初我也想到了重定向。但是重定向感觉就像代码异味,甚至是 HTTP 重定向。虽然有时是不可避免的,但这里可能是一个更清洁的解决方案,它可能正是您所寻找的。​​p>

      【讨论】:

        【解决方案3】:

        您现在可以选择使用 master 分支的 /docs 文件夹作为 GitHub Pages 网站的根目录。

        【讨论】:

          【解决方案4】:

          要使用Doxygengh-pages,您需要:

          1. gh-pages 分支的根目录下创建文件.nojekyll
          2. 确保从 .gitignore 文件中删除了 .png.html 和类似文件
          3. 最后,在项目的根目录中创建 index.html 文件:

            <!DOCTYPE HTML>
            <html lang="en-US">
                <head>
                    <meta charset="UTF-8">
                    <meta http-equiv="refresh" content="1;url=html/index.html">
                    <title>Page Redirection</title>
                </head>
                <body>
                    If you are not redirected automatically, 
                    follow the <a href="html/index.html">link to the documentation</a>
                </body>
            </html>
            

          参考资料:

          1. GitHub Pages (github.io) doxygen generated page not found (404)
          2. How to automatically generate doxygen documentation using Travis
          3. Auto-deploying Doxygen documentation to gh-pages with Travis CI
          4. https://help.github.com/categories/github-pages-basics/
          5. Publish Your Project Documentation with GitHub Pages
          6. How to make an introduction page with Doxygen

          【讨论】:

            【解决方案5】:

            answer by David Jacquel 很棒。

            但是,如果您像我一样尝试从 GitHub Pages 的 /dist/build 文件夹为您的整个 SPA 个人博客提供服务,那么可以使用 a beautiful dirty hack by Raphael Pedicini

            他建议您创建一个代理index.html 页面和自定义404.html 页面。如果您的用户输入子页面的直接 URL,例如https://example.github.io/blog/,GitHub Pages 服务器将为 404.html 提供脚本,这些脚本将 URL 作为一组参数传递给代理 index.html,从而启动 SPA。

            我不会在这里复制他的代码,因为它很可能会随着时间而改变。

            【讨论】:

              【解决方案6】:

              尝试将您的 index.html 文件及其所有依赖项转移到新的存储库中,然后将该存储库用作当前存储库中的子模块。目前 GitHub Pages 期望在您的存储库的根目录中找到一个 index.html 文件,但它无法找到。

              例如,假设您当前的存储库是“测试”。您创建一个新的存储库,例如“网站”,将您的 .html 和其他需要的文件传输到“网站”存储库。现在您需要使用“网站”存储库作为“测试”存储库中的子模块。

              Mote:在上述架构中,您只需要在“网站”存储库中使用“gh-pages”分支名称,而“测试”仍然可以保留主分支。

              Git submodules 上的小示例教程。

              【讨论】:

                猜你喜欢
                • 2019-01-19
                • 2012-08-04
                • 2022-10-23
                • 2014-05-22
                • 1970-01-01
                • 1970-01-01
                • 2015-12-11
                相关资源
                最近更新 更多