Конечные косые черты на сайте Jekyll + GitHub Pages вызывают 404 - PullRequest
0 голосов
/ 17 февраля 2019

Я бы хотел, чтобы все следующие URL-адреса разрешались на моем веб-сайте, созданном с помощью Jekyll и размещенном на страницах GitHub:

Локально все они работают правильно, но прямо сейчас на работающем сайте разрешается первый и третий вариант, но средний с косой чертой вызывает ошибку 404.

В данный момент я не использую постоянные ссылки.Когда я делаю и добавляю permalink: /about/ к первому вопросу на моей странице, проблема с косой чертой решается, но тогда about.html делает 404. Я полагаю, это лучше, чем текущее поведение, но я бы предпочелесли все три варианта работали индивидуально или перенаправлены на один, который работает.

Если это уместно, я устанавливаю каноническую ссылку в <head> моего шаблона макета следующим образом:

<link rel="canonical" href="{{ site.url }}{{ page.url | replace:'index.html',''}}">

А вот дерево файлов моего моего _site:

enter image description here

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019

Согласно поддержке в GitHub, это ожидаемое поведение в GitHub Pages:

Hello Michael,

Спасибо за обращение в службу поддержки GitHub с вашими вопросами о страницах GitHub.

В настоящее время нет никакого способа изменить наше поведение косой черты в данный момент, хотя я понимаю, что подобная ситуация может быть довольно разочаровывающей.

Я поделюсь вашим примером использования с командой для рассмотрения вбудущие улучшения.Я не могу сказать, произойдет ли это изменение или когда это произойдет, но ваш отзыв находится в правильных руках.

Спасибо,

Стив @slgraff Поддержка GitHub

0 голосов
/ 17 февраля 2019

Итак, если вы посмотрите в сгенерированную папку _site при создании сайта локально, вы увидите, что должно быть следующее:

_site
  |--about
  |   |--index.html
  |   |
...

Использование постоянной ссылки /about/ с / в конце означает, что Jekyll создаст папку about, а затем внутри создаст страницу index.html.Это называется index.html из-за исторического приоритета.Браузеры по умолчанию ищут эту страницу, когда нет конкретного файла для извлечения.

Имея это в виду, вот что происходит для каждого из этих трех вариантов:

  1. /about: браузер достаточно умен, чтобы знать, чтобы вставить конечный /, и поэтому заглянет в папку /about/.Вы не указали конкретный файл для поиска, поэтому по умолчанию он ищет index.html.Он находит index.html и отображает его.
  2. /about/: то же, что и выше.Он выглядит внутри папки /about/.Поскольку конкретный файл не был указан, он ищет index.html.Он находит index.html и отображает его.
  3. /about.html: браузер специально ищет файл с именем about.html, расположенный в корневой папке./about/index.html есть, но это не то, что ищет браузер.about.html не существует, поэтому выбрасывает 404.

Итак, ошибки нет.Вот как ведет себя браузер, когда вы задаете конечный код / в URL.

...