Это решение позволяет вам использовать настоящие 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 в каталог, отличный от webroot, тогда мой виртуальный хост представляет собой символическую ссылку на папку _site
:
ln -s /path/to/my-blog/_site /var/www/vhosts/my-blog.com
Тада! Теперь Apache может обслуживать папку _site из вашего виртуального корня вместе с переадресацией на основе .htaccess, которая использует любой код ответа HTTP, который вы пожелаете!
Вы могли бы даже проявить фантазию и использовать свойство redirect
во вступительной части каждого сообщения, чтобы указать, какой код перенаправления использовать в вашем цикле .htaccess.
person
Chris Ruppel
schedule
26.06.2013