72 votes

Github - Jekyll - Redirection des anciennes pages - meilleure approche

J'ai un blog sur les pages de github - jekyll

Quel est le meilleur moyen de résoudre la migration de stratégie d'url?

J'ai trouvé la meilleure pratique en commun est de créer htaccess comme si

 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 rake qui générera des pages de redirection. Mais comme il est un html, ce n'est pas en mesure d'envoyer 301 la tête, alors SE robots d' exploration ne le reconnaissent pas comme une redirection.

64voto

Konrad Podgórski Points 552

La meilleure solution est d'utiliser les deux <meta http-equiv="refresh" et <link rel="canonical" href=

Il fonctionne très bien, Google Bot réindexée l'ensemble de mon site web, sous de nouveaux liens sans perdre des positions. Les utilisateurs sont redirigés vers les nouveaux messages tout de suite.

<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/" />

À l'aide de <meta http-equiv="refresh" pour rediriger les visiteurs de la nouvelle poste. Comme pour Google Bot, il traite l' <link rel="canonical" href= comme redirection 301), l'effet est que vous obtenez vos pages réindexée et qu'est ce que vous voulez.

J'ai décrit tout le processus de la façon dont j'ai déménagé mon blog Wordpress pour Octopress ici. http://konradpodgorski.com/blog/2013/10/21/how-i-migrated-my-blog-from-wordpress-to-octopress/#redirect-301-on-github-pages

21voto

ms-ati Points 774

Avez-vous essayé le plugin Jekyll Alias Generator ?

Vous mettez les urias alias dans le texte YAML d'un message:

 ---
  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 méta:

 <!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 ce blog sur le sujet.

11voto

Chris Ruppel Points 156

Cette solution vous permet d'utiliser de vraies redirections HTTP via .htaccess - cependant, rien n'impliquant .htaccess va travailler sur GitHub pages, parce qu'ils n'utilisez pas Apache.

En Mai 2014 GitHub Pages prend en charge les redirections, mais selon le jekyll-redirection à partir de Gemme de la documentation qu'ils sont toujours basés sur HTTP ACTUALISATION (à l'aide d' <meta> tags), ce qui nécessite un plein chargement de la page avant la redirection peut se produire.

Je n'aime pas l' <meta> approche alors j'ai préparé une solution pour ceux qui cherchent à apporter une réelle HTTP redirections 301 dans une .fichier htaccess à l'aide d'Apache, qui sert une pré-généré Jekyll site:


Tout d'abord, ajoutez .htaccess de la include de la propriété en _config.yml

include: [.htaccess]

Ensuite, créez une .fichier htaccess et assurez-vous d'inclure YAML avant la matière. Ces tirets sont importants parce que maintenant Jekyll va analyser le fichier avec le Liquide, Jekyll création de modèles de langue:

---
---
DirectoryIndex index.html

RewriteEngine On
RewriteBase /

...

Assurez-vous que vos messages qui nécessitent des redirections ont deux propriétés comme suit:

---
permalink: /my-new-path/
original: blog/my/old/path.php
---

Maintenant dans .htaccess, il suffit d'ajouter une boucle:

{% for post in site.categories.post %}
  RewriteRule ^{{ post.original }} {{ post.permalink }} [R=301,L]
{% endfor %}

Cela va générer dynamiquement .htaccess à chaque fois que vous construire le site, et l' include dans votre fichier de config assure que .htaccess en _site répertoire.

RewriteRule ^blog/my/old/path.php /my-new-path/ [R=301,L]

À partir de là, c'est à vous de servir _site à l'aide d'Apache. Normalement, je clone le plein Jekyll repo dans une situation de non-répertoire webroot, puis mon vhost est un lien symbolique vers l' _site le dossier:

ln -s /path/to/my-blog/_site /var/www/vhosts/my-blog.com

Tada! Maintenant, Apache peut servir la _site dossier à partir de votre racine virtuelle, complet avec .htaccess-alimenté des redirections utiliser n'importe quel code HTTP de la réponse que vous désirez!

Vous pourriez même obtenir des super-chic et utiliser un redirect de la propriété à l'intérieur de chaque post avant de matière pour désigner le code de redirection à utiliser dans votre .htaccess de la boucle.

5voto

Tom Clarkson Points 12369

La meilleure option est d'éviter les changements de l'url tout en définissant l'permalien format _config.yml pour correspondre à votre ancien blog.

Au-delà, la solution la plus complète est la génération de pages de redirection, mais n'est pas nécessairement en vaut la chandelle. J'ai fini par tout simplement faire ma page 404 un peu plus convivial, avec javascript pour deviner la bonne nouvelle url. Il ne fait rien pour la recherche, mais, concrètement, les utilisateurs peuvent accéder à la page qu'il cherchait et il n'y a pas d'héritage des trucs à soutenir dans le reste du code.

http://tqcblog.com/2012/11/14/custom-404-page-for-a-github-pages-jekyll-blog/

2voto

Alan W. Smith Points 6704

Depuis github n'autorise pas les redirections 301 (ce qui n'est pas surprenant), vous aurez à prendre une décision entre le déplacement de votre nouvelle structure de l'URL (et en prenant un moteur de recherche, de frapper) ou de quitter l'Url de la façon dont ils sont. Je vous suggère d'aller de l'avant et de faire le passage. Laissez le moteur de recherche, de copeaux de tomber où ils peuvent. Si quelqu'un frappe un de vos anciens liens via le moteur de recherche, ils seront redirigés vers le nouvel emplacement. Au fil du temps, les moteurs de recherche ramasser vos modifications.

Quelque chose que vous pouvez faire pour améliorer les choses est de créer un Sitemap où vous n'liste de vos nouvelles pages et de ne pas les anciens. Cela devrait accélérer le remplacement des anciennes Url avec les nouveaux. En outre, si tous vos anciennes Url sont dans votre "/programovani' répertoire, vous pouvez également utiliser un robots.txt fichier de dire analyses futures ils doivent ignorer ce répertoire. Par exemple:

User-agent: *
Disallow: /programovani/

Il va prendre un peu de temps pour les moteurs de recherche pour rattraper avec les changements. Ce n'est pas vraiment un gros problème. Aussi longtemps que les anciennes Url existent encore et rediriger les gens vers les pages actives, vous serez amende.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X