J'ai un blog sur les pages Github - Jekyll
Quelle est la meilleure façon de résoudre la migration de la stratégie d'URL?
J'ai trouvé que la meilleure pratique en commun est de créer htaccess comme ça
Redirect 301 /programovani/2010/04/git-co-to-je-a-co-s-tim/ /2010/04/05/git-co-to-je-a-co-s-tim.html
Mais cela ne semble pas fonctionner avec Github. Une autre solution que j'ai trouvée est de créer une tâche de râteau, qui générera des pages de redirection. Mais comme c'est un html, il n'est pas en mesure d'envoyer 301
head, donc les robots d'exploration SE ne le reconnaîtront pas comme une redirection.
La meilleure solution consiste à utiliser les deux <meta http-equiv="refresh"
et <link rel="canonical" href=
Cela fonctionne très bien, Google Bot a réindexé tout mon site Web sous de nouveaux liens sans perdre de position. Les utilisateurs sont également redirigés vers les nouveaux messages immédiatement.
<meta http-equiv="refresh" content="0; url=http://konradpodgorski.com/blog/2013/10/21/how-i-migrated-my-blog-from-wordpress-to-octopress/">
<link rel="canonical" href="http://konradpodgorski.com/blog/2013/10/21/how-i-migrated-my-blog-from-wordpress-to-octopress/" />
En utilisant <meta http-equiv="refresh"
redirigera chaque visiteur vers le nouveau message. Quant à Google Bot, il traite <link rel="canonical" href=
comme redirection 301, l'effet est que vous obtenez vos pages réindexées et c'est ce que vous voulez.
J'ai décrit tout le processus de transfert de mon blog de Wordpress vers Octopress ici. http://konradpodgorski.com/blog/2013/10/21/how-i-migrated- my-blog-from-wordpress-to-octopress/# redirect-301-on-github-pages
Avez-vous essayé le plugin Jekyll Alias Generator ?
Vous mettez les alias d'URL dans la première page YAML d'un post:
---
layout: post
title: "My Post With Aliases"
alias: [/first-alias/index.html, /second-alias/index.html]
---
Lorsqu'un utilisateur visite l'une des URL d'alias, il est redirigé vers l'URL principale via une actualisation de la balise META:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta http-equiv="refresh" content="0;url=/blog/my-post-with-aliases/" />
</head>
</html>
Voir aussi cet article de blog sur le sujet.
En date de mai 2014 les pages GitHub prennent en charge les redirections , mais selon la documentation jekyll-redirect-from Gem elles sont toujours basées sur HTTP-REFRESH ( en utilisant <meta>
tags), ce qui nécessite un chargement complet de la page avant que la redirection puisse se produire.
Je n'aime pas le <meta>
j'ai donc élaboré une solution pour quiconque cherche à fournir de véritables redirections HTTP 301 dans un fichier .htaccess à l'aide d'Apache, qui dessert un site Jekyll pré-généré:
Tout d'abord, ajoutez .htaccess
à la propriété include
dans _config.yml
include: [.htaccess]
Ensuite, créez un fichier .htaccess et assurez-vous d'inclure avant-propos YAML . Ces tirets sont importants car maintenant Jekyll analysera le fichier avec Liquid, le langage de template de Jekyll:
---
---
DirectoryIndex index.html
RewriteEngine On
RewriteBase /
...
Assurez-vous que vos publications qui nécessitent des redirections ont deux propriétés comme ceci:
---
permalink: /my-new-path/
original: blog/my/old/path.php
---
Maintenant, en .htaccess, ajoutez simplement une boucle:
{% for post in site.categories.post %}
RewriteRule ^{{ post.original }} {{ post.permalink }} [R=301,L]
{% endfor %}
Cela générera dynamiquement .htaccess chaque fois que vous construirez le site, et le include
dans votre fichier de configuration garantit que .htaccess en fait _site
répertoire.
RewriteRule ^blog/my/old/path.php /my-new-path/ [R=301,L]
À 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 non webroot, puis mon vhost est un lien symbolique vers le _site
dossier:
ln -s /path/to/my-blog/_site /var/www/vhosts/my-blog.com
Tada! Apache peut désormais 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 désirez!
Vous pouvez même obtenir une super fantaisie et utiliser une propriété redirect
dans le sujet de chaque article pour désigner le code de redirection à utiliser dans votre boucle .htaccess.
plug-in de redirection
https://github.com/jekyll/jekyll-redirect-from#redirect-to
Il est pris en charge par GitHub et facilite:
_config.yml
gems:
- jekyll-redirect-from
a.md
---
permalink: /a
redirect_to: 'http://example.com'
---
comme expliqué sur: https://help.github.com/articles/redirects-on-github-pages/
Maintenant:
firefox localhost:4000/a
vous redirigera vers example.com
.
Le plugin prend le relais chaque fois que le redirect_to
est défini par la page.
Testé sur les pages GitHub v64.
Remarque: cette version a un grave bug récemment corrigé qui réutilise à tort la disposition par défaut pour la redirection: https://github.com/jekyll/jekyll-redirect-from/pull/106
Méthode de mise en page manuelle
Si vous n'avez pas envie d'utiliser https://github.com/jekyll/jekyll-redirect-from il est facile de l'implémenter vous-même:
a.md
---
layout: 'redirect'
permalink: /a
redir_to: 'http://example.com'
sitemap: false
---
_layouts/redirect.html
basé sur Rediriger depuis une page HTML :
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Redirecting...</title>
{% comment %}
Don't use 'redirect_to' to avoid conflict
with the page redirection plugin: if that is defined
it takes over.
{% endcomment %}
<link rel="canonical" href="{{ page.redir_to }}"/>
<meta http-equiv="refresh" content="0;url={{ page.redir_to }}" />
</head>
<body>
<h1>Redirecting...</h1>
<a href="{{ page.redir_to }}">Click here if you are not redirected.<a>
<script>location='{{ page.redir_to }}'</script>
</body>
</html>
Comme cet exemple, le redirect-from
le plugin ne génère pas 301s, seulement meta
+ redirections JavaScript.
Nous pouvons vérifier ce qui se passe avec:
curl localhost:4000/a
La meilleure option consiste à éviter complètement les changements d'URL en définissant le format de permalien dans _config.yml pour correspondre à votre ancien blog.
Au-delà de cela, la solution la plus complète consiste à générer des pages de redirection, mais ne vaut pas nécessairement l'effort. J'ai fini par rendre ma page 404 un peu plus conviviale, avec javascript pour deviner la nouvelle URL correcte. Il ne fait rien pour la recherche, mais les utilisateurs réels peuvent accéder à la page qu'ils recherchaient et il n'y a aucun élément hérité à prendre en charge dans le reste du code.
http://tqcblog.com/2012/11/14/custom-404-page-for-a-github-pages-jekyll-blog/
Étant donné que github n'autorise pas les redirections 301 (ce qui n'est pas surprenant), vous devrez prendre une décision entre passer à votre nouvelle structure d'URL (et prendre un hit de moteur de recherche) ou laisser les URL telles qu'elles sont. Je vous suggère d'aller de l'avant et de faire le pas. Laissez les puces des moteurs de recherche tomber où elles le peuvent. Si quelqu'un accède à l'un de vos anciens liens via le moteur de recherche, il sera redirigé vers le nouvel emplacement. Au fil du temps, les moteurs de recherche reprendront vos modifications.
Quelque chose que vous pouvez faire pour aider les choses est de créer un Sitemap où vous ne listez que vos nouvelles pages et non les anciennes. Cela devrait accélérer le remplacement des anciennes URL par les nouvelles. De plus, si toutes vos anciennes URL se trouvent dans votre répertoire '/ programovani', vous pouvez également utiliser un fichier robots.txt pour indiquer aux futures analyses qu'elles devraient ignorer ce répertoire. Par exemple:
User-agent: *
Disallow: /programovani/
Il faudra un peu de temps aux moteurs de recherche pour rattraper les changements. Ce n'est pas vraiment un gros problème. Tant que les anciennes URL existent toujours et redirigent les personnes réelles vers les pages actives, tout ira bien.
Comme d'autres l'ont mentionné, la meilleure solution consiste à conserver les URL de travail ou à dupliquer les pages et à spécifier une URL canonique .
Étant donné que les pages github ne prennent pas en charge les véritables redirections, j'ai choisi de configurer rerouter sur Heroku pour renvoyer 301 redirections (permanentes) de l'ancien domaine de mon site vers le nouveau. J'ai décrit les détails ici:
Jekyll a subi des mises à jour majeures au cours des derniers mois, alors ce n'était peut-être pas possible lorsque cette question a été initialement publiée ...
Jekyll prend en charge un attribut permalink
dans la section YAML front-matter de vos articles de blog. Vous pouvez spécifier l'URL que vous souhaitez que votre publication ait et Jekyll l'utilisera (au lieu du nom de fichier) lors de la génération de votre site.
---
title: My special blog post
permalink: /programovani/2010/04/git-co-to-je-a-co-s-tim
---
My blog post markdown content