gpt4 book ai didi

http-status-code-404 - 使用自定义域时,Github 页面相关链接不起作用

转载 作者:行者123 更新时间:2023-12-02 01:00:37 27 4
gpt4 key购买 nike

我正在使用没有 Jekyll 的 Github 页面,只是裸 Markdown .md文件。

从该链接 .md到我的 repo 中的某个文件夹,我正在使用相对链接。

为什么是相对链接?我使用的是绝对链接,如 https://github.com/USER_NAME/REPO_NAME/blob/master/FOLDER_NAME但后来我更改了我的 repo 名称,每个链接都停止工作。

这就是为什么我转向相对链接,但是当我检查页面在自定义域下的工作方式时 -> 每个链接都停止工作。

“停止”工作是指:现在当我访问 www.CUSTOM_DOMAIN.com/REPO_NAME/FOLDER_NAME 时,我收到了 404。

编辑 1:
当我试图为 this comment 编辑这个问题时我意识到问题是不同的:
- 文件链接工作正常
- 但文件夹链接不起作用,即 REPO_NAME 未添加到 URI,应该有:

www.CUSTOM_DOMAIN.com/REPO_NAME/FOLDER_NAME

而实际上有:
www.CUSTOM_DOMAIN.com/FOLDER_NAME.

所以我的 repo 看起来像这样:
REPO_NAME/
├── README.md
├── FOLDER_NAME/
│ ├── FOLDERFILE.md

所以我的 README.md 中的链接是(挪威克朗):
[some string for folder](/FOLDER_NAME)
(which is unwrapped by github-pages-engine to)
www.CUSTOM_DOMAIN.com/FOLDER_NAME

当我链接到一个文件时它工作正常,像这样(确定):
[some string for file](/FOLDER_NAME/FOLDERFILE.md)
(which is unwrapped by github-pages-engine to)
www.CUSTOM_DOMAIN.com/REPO_NAME/FOLDER_NAME.html

编辑 2:
我要修复的页面不是组织/用户页面,因此路径中应该有 REPO_NAME。

编辑 3:
我更改了链接以删除前导斜杠,但它们仍然不起作用。现在链接到我的 README.md是(挪威克朗):
[some string for folder](FOLDER_NAME/)
(which is unwrapped by github-pages-engine to)
www.CUSTOM_DOMAIN.com/REPO_NAME/FOLDER_NAME

或(也是挪威克朗):
[some string for folder](./FOLDER_NAME/)
(which is unwrapped by github-pages-engine to)
www.CUSTOM_DOMAIN.com/REPO_NAME/FOLDER_NAME

最佳答案

你有两个问题:

  • 您没有使用相对 URL。
  • 您没有考虑与自定义域不同的服务器根。

  • 相对 URL

    相对 URL 是相对于当前位置的路径。但是,以斜杠开头的 URL 与当前位置无关。斜杠表示从服务器根目录开始的路径。换句话说,要“规范化” URL,只需在域前面加上。

    因此,对于与当前位置相关的链接,它不能以斜杠开头。使用您的示例结构, FOLDERFILE.md 中的任何链接文件看起来像这样:
    [REPO_NAME](../)          <= step back one directory
    [README.md](../README.md) <= step back one directory
    [FOLDER_NAME](./) <= the current directory

    以及 README.md 中的任何链接文件看起来像这样”
    [REPO_NAME](./)
    [FOLDER_NAME](FOLDER_NAME/)
    [FOLDERFILE.md](FOLDER_NAME/FOLDERFILE.md)

    如果有帮助,您可以使用当前目录 ( ./ ) 启动所有 URL。虽然不是必需的,但有些人发现它更具可读性。在这种情况下, README.md文件看起来像这样”
    [REPO_NAME](./)
    [FOLDER_NAME](./FOLDER_NAME/)
    [FOLDERFILE.md](./FOLDER_NAME/FOLDERFILE.md)

    服务器根

    了解服务器根目录和站点根目录之间的区别很重要。当它们相同时,绝对链接将正常工作。但是,当它们不同时,只有真正的相对链接才能在两者之间起作用。

    当您使用 GitHub 提供的域设置 GitHub 页面时,您的站点托管在 https://USERNAME.github.io/REPO_NAME .在这种情况下,服务器根目录位于 USERNAME.github.io/这就是 /指着。但是,您站点的根目录位于子目录 /REPO_NAME 中。 .因此,要使绝对 URL 起作用,必须包含 /REPO_NAME/在他们之中。

    但是,当您设置自定义域时,服务器根目录和站点根目录位于同一位置: https://example.com/ .没有 REPO_NAME子目录。 REPO_NAME的内容在 / .

    举例来说,以下 URL 指向相同的位置,具体取决于您使用的是 GitHub 域还是自定义域。
    GitHub Domain                        | Custom Domain
    ------------------------------------ | --------------------------
    /REPO_NAME/ | /
    /REPO_NAME/README.md | /README.md
    /REPO_NAME/FOLDER_NAME/ | /FOLDER_NAME/
    /REPO_NAME/FOLDER_NAME/FOLDERFILE.md | /FOLDER_NAME/FOLDERFILE.md

    这就是为什么你需要使用真正的相对 URL——不以 / 开头的 URL。 .

    关于http-status-code-404 - 使用自定义域时,Github 页面相关链接不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50798379/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com