gh-pages 在搜索资源时忽略项目目录?

gh-pages ignoring project directory when searching for resources?

我有一个我一直在使用的网站,它在本地运行良好,但是当部署到 gh-pages 时,在尝试获取资源时出现许多 404。 例如,我有一行 css 作为背景是

background: #fff url(/assets/images/bg.jpg) repeat top left;

我得到的 404 是这个{

github.io/assets/images/bg.jpg

路径应该是

github.io/myProject/assets/images/bg.jpg

我怎样才能让它生效?

发生的情况是,在您的本地设置中,资产文件夹位于同一目录中。

假设您的本地路径看起来像这样: file:///index.html 您的资产文件夹是 index.html 的兄弟文件夹。在这种情况下,它起作用是因为 / 转到目录的开头。在这种情况下是:file:/// 在那里它看到资产文件夹,所以它在本地工作。

现在 github,你有一个基本上是 my-project 的回购协议。在 my-project 中,您有 index.html 和文件夹 assets。因此,当您在这里说 /assets/ 时,begginnig 目录是 github.io,因此它会在那里寻找显然不存在的 assets

解决方法 不要在资产前添加 /。只要资产与编写此代码的目录位于同一目录中,就可以了。

还仔细查看相对路径以更好地理解它:http://www.coffeecup.com/help/articles/absolute-vs-relative-pathslinks/

虽然 gh-pages 是由 Jekyll 生成的,但您可以使用他的魔法来简化开发。

在根目录创建一个 _config.yml 文件,包含:

baseurl: myProject/

您现在可以使用 {{site.baseurl}}assets/images/bg.jpg 调用任何资源 这将自动转换为 myProject/assets/images/bg.jpg.