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

Http status code 404 使用自定义域时,Github页面相对链接不起作用,http-status-code-404,markdown,github-pages,relative-path,github-flavored-markdown,Http Status Code 404,Markdown,Github Pages,Relative Path,Github Flavored Markdown,我使用的Github页面没有Jekyll,只是简单的markdown.md文件 要从.md链接到我的repo中的某个文件夹,我使用的是相对链接 为什么是相对链接?我使用的是绝对链接,比如,但后来我更改了我的回购名称,每个链接都停止工作 这就是为什么我移动到相对链接,但当我检查页面如何在自定义域->每个链接停止工作 所谓“停止”工作,我的意思是:现在当我进入www.CUSTOM_DOMAIN.com/REPO_NAME/FOLDER_NAME时,我得到了404 编辑1: 当我试图编辑此问题时,我

我使用的Github页面没有Jekyll,只是简单的markdown
.md
文件

要从
.md
链接到我的repo中的某个文件夹,我使用的是相对链接

为什么是相对链接?我使用的是绝对链接,比如,但后来我更改了我的回购名称,每个链接都停止工作

这就是为什么我移动到相对链接,但当我检查页面如何在自定义域->每个链接停止工作

所谓“停止”工作,我的意思是:现在当我进入www.CUSTOM_DOMAIN.com/REPO_NAME/FOLDER_NAME时,我得到了404



编辑1:
当我试图编辑此问题时,我意识到问题不同: -指向文件的链接可以正常工作 -但文件夹链接不起作用,即未将REPO_名称添加到URI中,应该有:

www.CUSTOM_DOMAIN.com/REPO_NAME/FOLDER_NAME
虽然实际上有:

www.CUSTOM_DOMAIN.com/FOLDER_NAME.
因此,我的回购协议如下所示:

REPO_NAME/
├── README.md
├── FOLDER_NAME/
│   ├── FOLDERFILE.md
[REPO_NAME](../)          <= step back one directory
[README.md](../README.md) <= step back one directory
[FOLDER_NAME](./)         <= the current directory
因此,我的
README.md
中的链接是(NOK):

当我链接到一个文件时,它可以正常工作,如下所示(确定):



编辑2:
我试图修复的页面不是组织/用户页面,因此路径中应该有REPO_名称



编辑3:
我更改了链接以删除前导斜杠,但它们仍然不起作用。现在我的
README.md
中的链接是(NOK):

或(也可以是NOK):

你有两个问题:

  • 您没有使用相对URL
  • 您没有考虑到服务器根目录与自定义域不同
  • 相对URL 相对URL是相对于当前位置的路径。但是,以斜杠开头的URL与当前位置无关。开始斜杠表示来自服务器根目录的路径。换句话说,要“规范化”URL,只需在域前面加上前缀

    因此,对于相对于当前位置的链接,它不能以斜杠开头。使用示例结构,
    FOLDERFILE.md
    文件中的任何链接如下所示:

    REPO_NAME/
    ├── README.md
    ├── FOLDER_NAME/
    │   ├── FOLDERFILE.md
    
    [REPO_NAME](../)          <= step back one directory
    [README.md](../README.md) <= step back one directory
    [FOLDER_NAME](./)         <= the current directory
    
    如果有帮助,您可以使用当前目录(
    /
    )启动所有URL。虽然没有必要,但有些人觉得它更具可读性。在这种情况下,
    README.md
    文件如下所示

    服务器根目录 理解服务器根目录和站点根目录之间的差异非常重要。当它们相同时,绝对链接可以正常工作。但是,当它们不同时,只有真正的相对链接可以跨这两个目录工作

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

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

    举例来说,根据您使用的是GitHub域还是自定义域,以下URL指向相同的位置

    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不是以
    /

    开头的。你能编辑你的问题并提供一些相对链接的例子吗(包括源页面和目标页面)。如果您指出您希望相对链接指向的绝对URL以及实际指向的位置,也会有所帮助。@Waylan问题已编辑,我希望现在不要太抽象!我添加了编辑问题(编辑2)因为我认为这可能会影响答案。您的编辑对我来说毫无意义。当您在浏览器中查看README.md时,它的完整地址是什么?README.md只是从github web界面创建repo时添加的标准README文件;它是(一如既往)在repo rootYes,但是当您访问该页面时,浏览器地址栏中的URL是什么?不,当您在GitHub页面(使用您的自定义域)上查看该页面时,地址是什么?
    [REPO_NAME](../)          <= step back one directory
    [README.md](../README.md) <= step back one directory
    [FOLDER_NAME](./)         <= the current directory
    
    [REPO_NAME](./)
    [FOLDER_NAME](FOLDER_NAME/)
    [FOLDERFILE.md](FOLDER_NAME/FOLDERFILE.md)
    
    [REPO_NAME](./)
    [FOLDER_NAME](./FOLDER_NAME/)
    [FOLDERFILE.md](./FOLDER_NAME/FOLDERFILE.md)
    
    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