Mit dieser Lösung können Sie echte HTTP-Weiterleitungen über .htaccess verwenden. Auf GitHub-Seiten funktioniert jedoch nichts mit .htaccess, da sie keinen Apache verwenden.
Ab Mai 2014 unterstützt GitHub Pages Weiterleitungen , aber laut der Dokumentation zu jekyll-redirect-from Gem basieren sie immer noch auf HTTP-REFRESH (unter Verwendung von <meta>
Tags), für das eine vollständige Seitenladung erforderlich ist, bevor eine Umleitung erfolgen kann.
Der <meta>
Ansatz gefällt mir nicht, daher habe ich eine Lösung für alle entwickelt, die mithilfe von Apache, das eine vorgenerierte Jekyll-Site bereitstellt, echte HTTP 301-Weiterleitungen in einer .htaccess-Datei bereitstellen möchten:
Fügen Sie .htaccess
zunächst der include
Eigenschaft in hinzu_config.yml
include: [.htaccess]
Erstellen Sie als Nächstes eine .htaccess-Datei und stellen Sie sicher, dass YAML-Frontmaterie enthalten ist . Diese Striche sind wichtig, da Jekyll jetzt die Datei mit Liquid, Jekylls Vorlagensprache, analysiert:
---
---
DirectoryIndex index.html
RewriteEngine On
RewriteBase /
...
Stellen Sie sicher, dass Ihre Posts, für die Weiterleitungen erforderlich sind, zwei Eigenschaften haben:
---
permalink: /my-new-path/
original: blog/my/old/path.php
---
Fügen Sie jetzt in .htaccess einfach eine Schleife hinzu:
{% for post in site.categories.post %}
RewriteRule ^{{ post.original }} {{ post.permalink }} [R=301,L]
{% endfor %}
Dadurch wird jedes Mal, wenn Sie die Site erstellen, dynamisch .htaccess generiert, und include
in Ihrer Konfigurationsdatei wird sichergestellt, dass .htaccess in das _site
Verzeichnis aufgenommen wird.
RewriteRule ^blog/my/old/path.php /my-new-path/ [R=301,L]
Von dort aus liegt es an Ihnen, _site
mit Apache zu dienen . Normalerweise klone ich das vollständige Jekyll-Repo in ein Nicht-Webroot-Verzeichnis, dann ist mein vhost ein Symlink zum _site
Ordner:
ln -s /path/to/my-blog/_site /var/www/vhosts/my-blog.com
Tada! Jetzt kann Apache den Ordner _site von Ihrem virtuellen Stammverzeichnis aus bereitstellen, einschließlich Weiterleitungen mit .htaccess-Unterstützung, die den gewünschten HTTP-Antwortcode verwenden!
Sie könnten sogar super schick werden und eine redirect
Eigenschaft in der Titelseite jedes Posts verwenden, um zu bestimmen, welcher Umleitungscode in Ihrer .htaccess-Schleife verwendet werden soll.