我正在使用没有Jekyll的Github页面,只有简单的markdown .md
文件。
要从.md
链接到我的仓库中的某个文件夹,我正在使用相对链接。
为什么要相对链接?我使用的是https://github.com/USER_NAME/REPO_NAME/blob/master/FOLDER_NAME之类的绝对链接,但之后我更改了我的回购名称,并且每个链接都停止工作。
这就是为什么我转移到相对链接,但当我检查页面在自定义域下的工作方式时 - >每个链接都停止工作。
“停止”工作我的意思是:现在当我去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_NAME/
├── README.md
├── FOLDER_NAME/
│ ├── FOLDERFILE.md
所以README.md
中的链接是(NOK):
[some string for folder](/FOLDER_NAME)
(which is unwrapped by github-pages-engine to)
www.CUSTOM_DOMAIN.com/FOLDER_NAME
当我链接到文件时它工作正常,就像这样(OK):
[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
中的链接是(NOK):
[some string for folder](FOLDER_NAME/)
(which is unwrapped by github-pages-engine to)
www.CUSTOM_DOMAIN.com/REPO_NAME/FOLDER_NAME
或(也是NOK):
[some string for folder](./FOLDER_NAME/)
(which is unwrapped by github-pages-engine to)
www.CUSTOM_DOMAIN.com/REPO_NAME/FOLDER_NAME
答案 0 :(得分:1)
你有两个问题:
相对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
文件中的所有链接都显示为&#34;
[REPO_NAME](./)
[FOLDER_NAME](FOLDER_NAME/)
[FOLDERFILE.md](FOLDER_NAME/FOLDERFILE.md)
如果有帮助,您可以使用当前目录(./
)启动所有URL。虽然没有必要,但有些人发现它更具可读性。在这种情况下,README.md
文件看起来像这样&#34;
[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
中。因此,要使绝对网址有效,必须在其中加入/REPO_NAME/
。
但是,当您设置自定义域时,服务器根目录和站点的根目录位于同一位置:https://example.com/
。没有REPO_NAME
子目录。 REPO_NAME
的内容位于/
。
为了说明,以下网址指向相同的位置,具体取决于您使用的是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
这就是为什么你需要使用真正的相对URLS - 不以/
开头的URL。