Удалить расширение html с страниц GitHub

Я использую страницы GitHub для размещения моего последнего сайта (http://jasonhoffmann.github.io/). Мне было интересно, есть ли способ удалить расширение .html с конца подстраниц (http://jasonhoffmann.github.io/contact.html), поскольку нет доступа на сервер.

Ответы

Ответ 1

Я бы предположил, что вам придется использовать подкаталоги (но может быть и более простой способ):

/index.html            => http://jasonhoffmann.github.io
/contact/index.html    => http://jasonhoffmann.github.io/contact

Однако у вас может быть больше контроля с помощью CNAME для перенаправления страницы GitHub на ваш собственный domain. Извините, у меня нет определенного ответа для вас, но, надеюсь, это поможет вам начать.

Ответ 2

Он уже работает, и вам не нужно ничего делать

Я не уверен, что вы уже знаете об этом или нет, но для удаления расширения .html из GitHub Pages все, что вам нужно сделать, это удалить расширение .html из ваших ссылок.

Другими словами, он уже работает, и вам не нужно ничего делать. Вам не нужно использовать подкаталоги, CNAME, перенаправления, Jekyll _config.yml, YAML front-matter или любой другой хак, предложенный во всех ответах здесь.

Примеры

Например, вы можете использовать:

вместо:

и отображает тот же файл. Просто измените ссылки в своих ссылках и что это.

Испытания

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

Для eaxample ссылка:

показывает, что он отображается в test1 в URL-адресе, но на самом деле отображает файл test1.html: enter image description here

Проблемы с другими решениями

Использование таких вещей, как index.html в специальных подкаталогах, как предлагается здесь в других ответах, не будет делать то, что вы хотите, что просто служит example.com/name.html при запросе example.com/name, но вместо этого даст вам 301 переадресацию на example.com/name/ (обратите внимание на конечную косую черту), которая, в свою очередь, даст вам содержимое файла example.com/name/index.html.

Это приводит к следующим проблемам: вы находитесь в другом каталоге, и вам нужно использовать <a href="../name"> вместо <a href="name"> для ссылок на другие страницы на одном уровне, и то же самое касается всех активов (или вы можете используйте абсолютные пути, поскольку кто-то предложил, что не очень хорошая идея на страницах GitHub, особенно на страницах проекта, потому что после переименования вил и проектов вам необходимо запомнить все ссылки и js/css-активы во всех html файлах.

Другое дело, что теперь у вас есть бесполезная переадресация для каждой навигации, которая случайно перенаправляет из HTTPS на HTTP ( из защищенных URL-адресов без косой черты небезопасные URL-адреса с косой чертой), например см:

который (на момент написания) перенаправляется на:

и НЕ:

как вы могли бы ожидать, поэтому убедитесь, что вы это знаете. Видеть: Insecure redirect (Обратите внимание, что это изображение связано с безопасным URL-адресом HTTPS, но в конечном итоге вы используете небезопасное HTTP-соединение - , вам может понадобиться использовать режим инкогнито, чтобы увидеть это.)

Вот как выглядят заголовки, начиная с 17 июня 2016 года:

$ curl -I https://rsp.github.io/gh-pages-no-extension/dir
HTTP/1.1 301 Moved Permanently
Server: GitHub.com
Content-Type: text/html
Location: http://rsp.github.io/gh-pages-no-extension/dir/
...       ^^^^

Надеюсь, что GitHub исправит это в будущем. (Я обнаружил это, когда писал этот ответ почти год назад, и эта проблема по-прежнему присутствует с июня 2016 года.)

Как ни странно, по состоянию на 17 июня 2016 года (я не уверен, что это всегда было так, потому что я недавно заметил это при обновлении этого ответа), этот URL:

перенаправляется на:

как и следовало ожидать. См. Заголовки:

$ curl -I https://rsp.github.io/gh-pages-no-extension
HTTP/1.1 301 Moved Permanently
Server: GitHub.com
Content-Type: text/html
Location: https://rsp.github.io/gh-pages-no-extension/
...       ^^^^^

Единственное различие заключается в том, что это корневой URL-адрес проекта, а не более глубокий каталог внутри проекта (см. структуру проекта), поэтому багги перенаправление, кажется, присутствует только в глубоких ссылках внутри проектов GitHub Pages и в одном браузере, который я тестировал, только когда вы используете режим инкогнито.

Суть в том, что нужно быть осторожным. Мой совет: избегать всех перенаправлений вообще и использовать только те URL-адреса, которые не приводят к каким-либо перенаправлениям.

Ответ 3

Вы можете сделать это через Jekyll, статический генератор сайта, встроенный в страницы GitHub. Он имеет несколько параметров permalink, которые могут быть установлены либо в _config.yml (что повлияет на все страницы и сообщения на вашем сайте), либо в YAML front-matter для каждой страницы/сообщения.

Например, вы можете добавить следующий код в ваш файл contact.html:

---
permalink: contact/
---

Это было бы вставлено перед <!DOCTYPE html>, но Jekyll позаботится о том, чтобы вырезать его, когда он служил на страницах GitHub. Когда вы это сделаете, вы сможете получить доступ к странице в jasonhoffman.github.io/contact вместо jasonhoffman.github.io/contact.html. Фактически Jekyll создает каталог под названием contact и помещает в него index.html файл с содержимым contact.html. Если вы установите и запустите Jekyll локально, вот что вы увидите:

.
|- _config.yml (optional)
|- contact.html
|- index.html
|- css
   |- styles.css
|- img
   |- image.jpg
|- _site
   |- index.html
   |- contact
      |- index.html
   |- css
      |- styles.css
   |- img
      |- image.jpg

Если вы не устанавливаете Jekyll локально, вы увидите все это, минус _site. Когда вы нажимаете это на GitHub, их серверы будут запускать Jekyll, а также генерировать и обслуживать эквивалент папки _site для вас (но он не будет отображаться в вашем репозитории GitHub).

Вы также можете пропустить Jekyll и создать подкаталог contact с index.html внутри. В любом случае вам также необходимо убедиться, что любые ссылки на активы (img, css, js) на вашем сайте имеют предыдущий /. Например,

<link rel="stylesheet" href="css/style.css">

Вместо этого следует

<link rel="stylesheet" href="/css/style.css">

Ответ 4

Теперь вам нужно просто добавить permalink: /your-pretty-url

Другой ответ не работает. Я пробовал. Вам нужно добавить префикс '/'.

Например:

---
layout: post
title:  "Welcome to Jekyll!"
date:   2017-04-29 22:04:31 +0700
categories: jekyll update
permalink: /welcome
---

Ответ 5

Как пользователь rsp упомянул, что довольно постоянные ссылки уже реализованы GitHub Pages, и никто не должен ничего делать, это не будет выполняться при запуске сервера Jekyll локально или в Jekyll по умолчанию. Если вы хотите удалить расширение html со страниц с помощью Jekyll на своем собственном сайте без Github Pages (все еще обслуживается Jekyll) или иметь локальный сайт разработки, который максимально похож на Github Pages, прежде чем нажать на GitHub,

Вам просто нужно добавить это в файл _config.yml :

permalink: pretty

Это удаляет ссылку .html из ссылки, заставляя все сообщения иметь свою собственную папку и сообщения с именем index.html.

Ответ 6

Я использую тему arctic fox, в которой использует следующую ссылку строки:

<a class="page-link" href="{{ page.url | prepend: site.baseurl }}">{{ page.title }}</a>

Решение состоит в том, чтобы добавить remove: '.html' в качестве фильтра, что приводит к

<a class="page-link" href="{{ page.url | remove: '.html' | prepend: site.baseurl }}">{{ page.title }}</a>

Локальная служба с Jekyll в настоящее время не работает, но обещана для Jekyll 3.0: https://github.com/jekyll/jekyll/pull/3452