Cette solution vous permet d'utiliser de véritables redirections HTTP via .htaccess. Toutefois, rien de ce qui implique .htaccess ne fonctionnera sur les pages GitHub car elles n'utilisent pas Apache.
En date de mai 2014 Les pages GitHub prennent en charge les redirections mais selon le Documentation de Gem jekyll-redirect-from ils sont toujours basés sur HTTP-REFRESH (en utilisant <meta>
), ce qui nécessite le chargement complet d'une page avant que la redirection ne puisse avoir lieu.
Je n'aime pas le <meta>
J'ai donc élaboré une solution pour tous ceux qui souhaitent fournir de véritables redirections HTTP 301 dans un fichier .htaccess utilisant Apache, qui sert un site Jekyll pré-généré :
D'abord, ajoutez .htaccess
a la include
la propriété dans _config.yml
include: [.htaccess]
Ensuite, créez un fichier .htaccess et assurez-vous d'y inclure Première page YAML . Ces tirets sont importants car Jekyll va maintenant analyser le fichier avec Liquid, le langage de modélisation de Jekyll :
---
---
DirectoryIndex index.html
RewriteEngine On
RewriteBase /
...
Assurez-vous que vos articles qui nécessitent des redirections ont deux propriétés comme celles-ci :
---
permalink: /my-new-path/
original: blog/my/old/path.php
---
Maintenant, dans le .htaccess, il suffit d'ajouter une boucle :
{% for post in site.categories.post %}
RewriteRule ^{{ post.original }} {{ post.permalink }} [R=301,L]
{% endfor %}
Cela permettra de générer dynamiquement le fichier .htaccess à chaque fois que vous construisez le site, et le fichier include
dans votre fichier de configuration garantit que le fichier .htaccess sera intégré dans le fichier de configuration. _site
répertoire.
RewriteRule ^blog/my/old/path.php /my-new-path/ [R=301,L]
A partir de là, c'est à vous de servir _site
en utilisant Apache. Normalement, je clone le dépôt complet de Jekyll dans un répertoire qui n'est pas la racine du web, puis mon serveur virtuel est un lien symbolique vers le dépôt de Jekyll. _site
dossier :
ln -s /path/to/my-blog/_site /var/www/vhosts/my-blog.com
Tada ! Apache peut maintenant servir le dossier _site à partir de votre racine virtuelle, avec des redirections alimentées par .htaccess qui utilisent le code de réponse HTTP que vous souhaitez !
Vous pourriez même être super fantaisiste et utiliser un redirect
dans la page d'accueil de chaque article pour désigner le code de redirection à utiliser dans votre boucle .htaccess.
2 votes
Cela a marché pour moi : help.github.com/articles/redirects-on-github-pages