Mar*_*och 4 markdown relative-path http-status-code-404 github-pages github-flavored-markdown
我正在使用没有 Jekyll 的 Github 页面,只有裸降价.md文件。
要将其链接.md到我的 repo 中的某个文件夹,我使用了相对链接。
为什么是相对链接?我使用的是绝对链接,如https://github.com/USER_NAME/REPO_NAME/blob/master/FOLDER_NAME但后来我更改了我的回购名称,每个链接都停止工作。
这就是为什么我转向相对链接,但是当我检查页面在自定义域下的工作方式时 -> 每个链接都停止工作。
“停止”工作是指:现在当我访问 www.CUSTOM_DOMAIN.com/REPO_NAME/FOLDER_NAME 时,我收到了 404。
编辑 1:
当我试图为这个评论编辑这个问题时,我意识到问题是不同的: - 文件链接工作正常 - 但文件夹链接不起作用,即 REPO_NAME 未添加到 URI,应该有:
www.CUSTOM_DOMAIN.com/REPO_NAME/FOLDER_NAME
Run Code Online (Sandbox Code Playgroud)
而实际上有:
www.CUSTOM_DOMAIN.com/FOLDER_NAME.
Run Code Online (Sandbox Code Playgroud)
所以我的回购看起来像这样:
REPO_NAME/
??? README.md
??? FOLDER_NAME/
? ??? FOLDERFILE.md
Run Code Online (Sandbox Code Playgroud)
所以我的链接README.md是(NOK):
[some string for folder](/FOLDER_NAME)
(which is unwrapped by github-pages-engine to)
www.CUSTOM_DOMAIN.com/FOLDER_NAME
Run Code Online (Sandbox Code Playgroud)
当我链接到一个文件时它工作正常,像这样(确定):
[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
Run Code Online (Sandbox Code Playgroud)
编辑 2:
我要修复的页面不是组织/用户页面,因此路径中应该有 REPO_NAME。
编辑 3:
我更改了链接以删除前导斜杠,但它们仍然不起作用。现在我的链接README.md是(NOK):
[some string for folder](FOLDER_NAME/)
(which is unwrapped by github-pages-engine to)
www.CUSTOM_DOMAIN.com/REPO_NAME/FOLDER_NAME
Run Code Online (Sandbox Code Playgroud)
或(也是挪威克朗):
[some string for folder](./FOLDER_NAME/)
(which is unwrapped by github-pages-engine to)
www.CUSTOM_DOMAIN.com/REPO_NAME/FOLDER_NAME
Run Code Online (Sandbox Code Playgroud)
你有两个问题:
相对 URL 是相对于当前位置的路径。但是,以斜杠开头的 URL 与当前位置无关。斜杠表示从服务器根目录开始的路径。换句话说,要“规范化” URL,只需在域前面加上。
因此,对于与当前位置相关的链接,它不能以斜杠开头。使用您的示例结构,FOLDERFILE.md文件中的任何链接都将如下所示:
[REPO_NAME](../) <= step back one directory
[README.md](../README.md) <= step back one directory
[FOLDER_NAME](./) <= the current directory
Run Code Online (Sandbox Code Playgroud)
README.md文件中的任何链接都将如下所示”
[REPO_NAME](./)
[FOLDER_NAME](FOLDER_NAME/)
[FOLDERFILE.md](FOLDER_NAME/FOLDERFILE.md)
Run Code Online (Sandbox Code Playgroud)
如果有帮助,您可以使用当前目录 ( ./)启动所有 URL 。虽然不是必需的,但有些人发现它更具可读性。在这种情况下,README.md文件将如下所示”
[REPO_NAME](./)
[FOLDER_NAME](./FOLDER_NAME/)
[FOLDERFILE.md](./FOLDER_NAME/FOLDERFILE.md)
Run Code Online (Sandbox Code Playgroud)
了解服务器根目录和站点根目录之间的区别很重要。当它们相同时,绝对链接将正常工作。但是,当它们不同时,只有真正的相对链接才能在两者之间起作用。
当您使用 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
Run Code Online (Sandbox Code Playgroud)
这种差异就是为什么您需要使用真正的相对 URL——不以/.
| 归档时间: |
|
| 查看次数: |
2744 次 |
| 最近记录: |