Github-使用自定义域时页面相关链接不起作用
Github-pages relative links not working when custom domain is used
我使用的 Github-pages 没有 Jekyll,只有 markdown .md
文件。
到 link 从那个 .md
到我的存储库中的某个文件夹 我正在使用相对 links.
为什么是相对的 link?我使用的是 link 之类的绝对 https://github.com/USER_NAME/REPO_NAME/blob/master/FOLDER_NAME,但后来我更改了我的回购名称,每个 link 都停止工作了。
这就是我移至相对 link 的原因,但后来当我检查页面在自定义域下的工作方式时 -> 每个 link 都停止工作。
通过 "stopped" 工作我的意思是:现在当我去 www.CUSTOM_DOMAIN。com/REPO_NAME/FOLDER_NAME 我得到 404。
编辑 1:
当我试图为 编辑这个问题时,我意识到问题是不同的:
- links 到文件工作正常
- 但文件夹的 links 不起作用,即 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
中的 link 是 (NOK):
[some string for folder](/FOLDER_NAME)
(which is unwrapped by github-pages-engine to)
www.CUSTOM_DOMAIN.com/FOLDER_NAME
当我 link 到一个文件时它工作正常,像这样 (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:
我要修复的页面不是 organization/user 页面,因此路径中应该有 REPO_NAME。
编辑 3:
我更改了 links 以删除前导斜杠,但它们仍然不起作用。现在 link 在我的 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
或(也为挪威克朗):
[some string for folder](./FOLDER_NAME/)
(which is unwrapped by github-pages-engine to)
www.CUSTOM_DOMAIN.com/REPO_NAME/FOLDER_NAME
你有两个问题:
- 您没有使用相对 URLs。
- 您没有考虑服务器根与自定义域的不同。
亲戚URLs
相对 URL 是相对于当前位置的路径。但是,以斜杠开头的 URL 与当前位置无关。开头的斜杠表示从服务器根目录开始的路径。换句话说,对于 "normalize" 和 URL,只需在域前加上。
因此,对于相对于当前位置的 link,它不能以斜杠开头。使用您的示例结构,FOLDERFILE.md
文件中的任何 links 将如下所示:
[REPO_NAME](../) <= step back one directory
[README.md](../README.md) <= step back one directory
[FOLDER_NAME](./) <= the current directory
README.md
文件中的任何 link 都将如下所示
[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)
服务器根目录
了解服务器根目录和站点根目录之间的区别很重要。当它们相同时,绝对 links 可以正常工作。但是,当它们不同时,只有真正的相对 links 才能在两者之间工作。
当您使用 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
而这种差异就是为什么您需要使用真正的相对 URLS - URLs 不以 /
.
开头
我使用的 Github-pages 没有 Jekyll,只有 markdown .md
文件。
到 link 从那个 .md
到我的存储库中的某个文件夹 我正在使用相对 links.
为什么是相对的 link?我使用的是 link 之类的绝对 https://github.com/USER_NAME/REPO_NAME/blob/master/FOLDER_NAME,但后来我更改了我的回购名称,每个 link 都停止工作了。
这就是我移至相对 link 的原因,但后来当我检查页面在自定义域下的工作方式时 -> 每个 link 都停止工作。
通过 "stopped" 工作我的意思是:现在当我去 www.CUSTOM_DOMAIN。com/REPO_NAME/FOLDER_NAME 我得到 404。
编辑 1:
当我试图为
www.CUSTOM_DOMAIN.com/REPO_NAME/FOLDER_NAME
而实际上有:
www.CUSTOM_DOMAIN.com/FOLDER_NAME.
所以我的回购看起来像这样:
REPO_NAME/
├── README.md
├── FOLDER_NAME/
│ ├── FOLDERFILE.md
所以我的 README.md
中的 link 是 (NOK):
[some string for folder](/FOLDER_NAME)
(which is unwrapped by github-pages-engine to)
www.CUSTOM_DOMAIN.com/FOLDER_NAME
当我 link 到一个文件时它工作正常,像这样 (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:
我要修复的页面不是 organization/user 页面,因此路径中应该有 REPO_NAME。
编辑 3:
我更改了 links 以删除前导斜杠,但它们仍然不起作用。现在 link 在我的 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
或(也为挪威克朗):
[some string for folder](./FOLDER_NAME/)
(which is unwrapped by github-pages-engine to)
www.CUSTOM_DOMAIN.com/REPO_NAME/FOLDER_NAME
你有两个问题:
- 您没有使用相对 URLs。
- 您没有考虑服务器根与自定义域的不同。
亲戚URLs
相对 URL 是相对于当前位置的路径。但是,以斜杠开头的 URL 与当前位置无关。开头的斜杠表示从服务器根目录开始的路径。换句话说,对于 "normalize" 和 URL,只需在域前加上。
因此,对于相对于当前位置的 link,它不能以斜杠开头。使用您的示例结构,FOLDERFILE.md
文件中的任何 links 将如下所示:
[REPO_NAME](../) <= step back one directory
[README.md](../README.md) <= step back one directory
[FOLDER_NAME](./) <= the current directory
README.md
文件中的任何 link 都将如下所示
[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)
服务器根目录
了解服务器根目录和站点根目录之间的区别很重要。当它们相同时,绝对 links 可以正常工作。但是,当它们不同时,只有真正的相对 links 才能在两者之间工作。
当您使用 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
而这种差异就是为什么您需要使用真正的相对 URLS - URLs 不以 /
.