Це рішення дозволяє використовувати справжні перенаправлення HTTP через .htaccess - однак, ніщо, що включає .htaccess, не працюватиме на сторінках GitHub, оскільки вони не використовують Apache.
Станом на травень 2014 року GitHub Pages підтримує переспрямування , але згідно з документацією jekyll-redirect-from Gem вони все ще базуються на HTTP-REFRESH (з використанням <meta>
тегів), що вимагає повного завантаження сторінки, перш ніж може відбутися перенаправлення.
Мені не подобається такий <meta>
підхід, тому я підготував рішення для тих, хто хоче забезпечити справжні перенаправлення HTTP 301 у файлі .htaccess за допомогою Apache, який обслуговує попередньо створений сайт Jekyll:
Спочатку додайте .htaccess
до include
властивості в_config.yml
include: [.htaccess]
Далі створіть файл .htaccess і обов’язково включіть передню частину YAML . Ці дефіси важливі, оскільки тепер Jekyll проаналізує файл за допомогою Liquid, мови шаблону Jekyll:
---
---
DirectoryIndex index.html
RewriteEngine On
RewriteBase /
...
Переконайтеся, що ваші публікації, які вимагають переадресації, мають дві властивості:
---
permalink: /my-new-path/
original: blog/my/old/path.php
---
Тепер у .htaccess просто додайте цикл:
{% for post in site.categories.post %}
RewriteRule ^{{ post.original }} {{ post.permalink }} [R=301,L]
{% endfor %}
Це буде динамічно генерувати .htaccess кожного разу, коли ви створюєте сайт, а include
у вашому конфігураційному файлі гарантує, що .htaccess переходить у _site
каталог.
RewriteRule ^blog/my/old/path.php /my-new-path/ [R=301,L]
З цього моменту ви самі повинні обслуговувати _site
Apache. Я зазвичай клоную повний репо Jekyll у каталог, що не є веб-кореневим, тоді мій vhost є символічним посиланням на _site
папку:
ln -s /path/to/my-blog/_site /var/www/vhosts/my-blog.com
Тада! Тепер Apache може обслуговувати папку _site з вашого віртуального кореневого коду разом із переспрямуваннями на основі .htaccess, які використовують будь-який бажаний код відповіді HTTP!
Ви навіть можете отримати надзвичайну фантазію та використовувати redirect
властивість, що знаходиться в передній частині кожного повідомлення, щоб визначити, який код перенаправлення використовувати у вашому циклі .htaccess.