Я экспериментировал с Jekyll, используя Octopress для развертывания. У меня это работает отлично на localhost, но почему-то CSS не загружается, когда сайт загружается на Github Pages. Я был бы признателен за любую помощь, которая понимает, почему.Jekyll on Github Страницы не отображаются CSS
Когда я просматриваю загрузку сайта по адресу страницы Github Pages, он показывает ошибку 404 для main.css
. Колонку инициатор (с помощью инструментов разработчика в Chrome BTW) указывает, что это происходит из файла index.html, на линии в HTML голове:
<link rel="stylesheet" href="/css/main.css">
Дерево для _site
директории на моей локальной машине является:
.
├── 2015
│ └── 11
│ └── 09
│ ├── another-jekyll-blog.html
│ ├── fifth-time-is-the-charm.html
│ └── jekyll-and-octopress-is-this-thing-on.html
├── about
│ └── index.html
├── css
│ └── main.css
├── feed.xml
├── index.html
└── jekyll
└── update
└── 2015
└── 11
└── 09
└── welcome-to-jekyll.html
Это дерево соответствует именно в репозитории Github после того, как сайт был нажат (я использовал jekyll build
, а затем octopress deploy
).
Когда я смотрю на вкладке Источников в инструментах для разработчиков, для развернутого сайта, дерево показывает, как:
[USER].github.io
|-css
| |-main.css
|
|-octo-5
| |-(index)
Но когда я просматривать сайт на локальном хосте, дерево сайта:
localhost:4000
|-css
| |-main.css
|
|-(index)
Проблема явно связана с тем, как файл main.css ссылается на страницы Github. Я предполагаю, что ссылка на таблицу стилей в индексном файле не работает, потому что main.css не находится в относительном пути /css/main.css
, как и ожидалось. Он работает локально, но не на сайте Github Pages. Но я не могу понять, почему, поскольку дерево сайтов кажется правильным, оно не было изменено по умолчанию по умолчанию Jekyll и является локальным и удаленным.
Для хорошей оценки, включая файл _config.yml
ниже. Это, по существу, не отличается от настроек по умолчанию при установке, хотя я добавил некоторые настройки Octopress:
# Site settings
title: Test Site
email: [email protected]
description: > # this means to ignore newlines until "baseurl:"
Site description here...
baseurl: "" # the subpath of your site, e.g. /blog
url: "http://yourdomain.com"
twitter_username: jekyllrb
## --- Octopress defaults --- ##
# Default extensions for new posts and pages
post_ext: markdown
page_ext: html
# Default templates for posts and pages, found in _templates/
post_layout: post
page_layout: page
# Format titles with titlecase?
titlecase: true
# Change default template file (in _templates/)
post_template: post
page_template: page
draft_template: draft
Для справки, хранилище находится в открытом доступе по адресу: https://github.com/bg-scro/octo-5
Это было. Я просто решил использовать параметр 'baseurl', а не' root', как вы предполагали, поскольку это уже было в '_config.yml' и в другом макете и содержит файлы. Обратите внимание, что мне пришлось включить весь URL-адрес на страницу github. Спасибо за быстрый ответ! – Scro
Один комментарий/вопрос после дальнейшей мысли: должна ли ссылка на файл CSS быть относительной, а не абсолютной? То, как «baseurl» добавляется в шаблоны Jekyll, является абсолютной ссылкой, нет? Я полагаю, это не имеет значения, но, похоже, с этим будет легче работать. интересную статью по этому вопросу здесь: http://ricostacruz.com/til/relative-paths-in-jekyll.html – Scro
'root' - это ось восьмиугольник,' baseurl' - это Jekyll. Поскольку ссылки на css находятся в include, это относится к любой странице независимо от его положения в архитектуре сайта. Определенно самый простой способ с jekyll. –