Aller au contenu

Noter ce sujet :

Recommended Posts

Bonjour



Je finis un gros ménage dans le site de mon profil, et j'ai un souci de redirection pour quelques très anciens backlinks.



Mes nouvelles urls sont sous la forme suivante :



/tourisme/post/titre-du-billet

Les anciens BLs pointent vers



/tourisme/titre-du-billet (mais aussi) /tourisme/?titre-du-billet

et il manque donc post/ entre l'URL de base et le titre du billet



J'ai essayé deux pistes :



1) Une redirection permanente par URL



RedirectPermanent /tourisme/titre-du-billet http://www.domaine.tld/tourisme/post/titre-du-billet

Ça fonctionne bien. Il faut le faire pour chaque URL mais il n'en a pas plus d'une douzaine. En revanche, ça ne redirige pas celles qui ont un ? avant le titre du billet. Si je rajoute le ? dans le premier argument de la règle, j'ai une erreur 500 sad.gif



2) Une règle de réécriture :



RewriteRule ^tourisme/([a-z]+.*)$ http://www.domaine.tld/post/$1 [R=301,L]
ou
RewriteRule ^tourisme/$ http://www.domaine.tld/post/$1 [R=301,L]

mais ça ne fonctionne pas : l'URL reste inchangée et c'est donc une erreur 404 qui est renvoyée



Un connaisseur pourrait-il m'indiquer ce que je fais mal ?



Merci d'avance



Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour Claire de Lune,



Puisque c'est le même domaine tu n'as pas besoin de mettre http://.... dans la règle.



Essaye avec (.*) = une chaine quelconque



RewriteRule ^tourisme/(.*)$ /tourisme/post/$1 [R=301,L]


Partager ce message


Lien à poster
Partager sur d’autres sites

Merci Nicolas



Malheureusement j'avais déjà essayé, et aucune redirection n'est faite... Mon .htaccess fonctionne pour d'autres réécritures, mais pas celle-ci, comme si la condition n'était remplie à aucun moment.



Voici le contenu réel du fameux fichier avec la ligne ajoutée selon tes conseils :



<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /

# So-called SEO trash
RewriteRule ^lune\.php$ http://www.campingclairdelune.fr/? [L,R=301]

# Feed leech
RewriteCond %{REMOTE_HOST} ww7\.be$ [OR]
RewriteCond %{HTTP_REFERER} ^http(s)?://(.*\.)?ww7\.be/ [NC]
RewriteRule .* - [F]

# Redirect old BLs
RewriteRule ^tourisme/(.*)$ /tourisme/post/$1 [R=301,L]

# Force www
RewriteCond %{HTTP_HOST} ^campingclairdelune.fr$
RewriteRule ^(.*) http://www.campingclairdelune.fr/$1 [QSA,L,R=301]

# Nice URLs
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?$1
</IfModule>

Partager ce message


Lien à poster
Partager sur d’autres sites

Je continue ma quête, en espérant y parvenir tout seul...



J'utilise pour mes tests le site http://htaccess.madewithlove.be/ qui permet de voir à partir d'une URL les règles qui seront appliquées et l'URL réécrite



Le BL

http://www.campingclairdelune.fr/tourisme/le-marche-provencal

avec les règles

RewriteCond %{REQUEST_URI} tourisme
RewriteCond %{REQUEST_URI} !post
RewriteRule ^tourisme/(.*)$ /tourisme/post/$1 [R=301,L]

est bien modifiée en

http://www.campingclairdelune.fr/tourisme/post/le-marche-provencal

Mais sur le site réel ça ne fonctionne pas, j'en déduis que soit cet outil n'est pas très fiable, soit qu'une autre règle entre en conflit avec mes bricolages. Malheureusement pour l'instant, je n'ai plus beaucoup d'idées, alors je retourne à ma lecture de la doc de mod_rewrite, ce qui n'est pas de la tarte biggrin.gif






Partager ce message


Lien à poster
Partager sur d’autres sites

Tu as essayé en laissant uniquement cette règle (désactive les autres règles) ?


Partager ce message


Lien à poster
Partager sur d’autres sites

Non, je n'ai pas encore essayé ^^



Mais si je dois le faire, ce sera très tard le soir, en effet c'est la pleine saison pour les campings en ce moment ;)


Partager ce message


Lien à poster
Partager sur d’autres sites

Je ne m'en sors toujours pas...



Pour récapituler, dans le site de ma signature, j'ai un répertoire www/tourisme/, dans lequel j'ai mis le .htaccess suivant :



RewriteEngine on
RewriteBase /tourisme/

# Old RSS feed
RewriteRule ^rss.php(/)?$ http://www.campingclairdelune.fr/tourisme/feed/atom [R=301,L]

# Nice URLs
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?$1

L'ancien flux RSS est bien redirigé, et les URLs du blog sont bien réécrites sans le index.php.



Je souhaite maintenant que d'anciens BLs de la forme



domaine/tourisme/titre-du-billet



soient redirigés vers



domaine/tourisme/post/titre-du-billet



en ajoutant ceci dans mon .htacces



RewriteCond %{REQUEST_URI} !post
RewriteRule ^tourisme/(.*)$ /tourisme/post/$1 [R=301,L]

mais ça ne fonctionne pas. Auriez-vous d'autres idées pour m'indiquer où je me trompe ?








Partager ce message


Lien à poster
Partager sur d’autres sites

Merci Dan, mais oui j'ai déjà testé cela suivant le conseil de Nicolas en #2 (sans l'URL complète et avec) et tout marche sur le site, mais aucune redirection n'est effectuée.



En revanche, si je supprime dans la règle le mot tourisme et le / qui le suit, j'obtiens de redirection et l'url finale est :



domaine/tourisme/post/post/post/post/post/post/post/post/post/post/post/post/post/post/post/post/post/post/post/post/post/titre-du-billet



J'ai donc l'impression que le premier argument de la règle telle que tu me la donnes n'est pas pris en compte :(


Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour



J'ai un peu avancé, et je parviens à rediriger les anciens BLs en query_string



domaine/tourisme/?titre-du-billet => domaine/tourisme/post/titre-du-billet



avec cet ajout dans le fichier .htaccess



# Redirect old query_string BLs
RewriteCond %{QUERY_STRING} ^([a-z0-9]+.*)$
RewriteCond %{QUERY_STRING} !^q=.*$
RewriteCond %{QUERY_STRING} !^pf=.*$
RewriteRule ^$ /tourisme/post/%{QUERY_STRING}? [R=301,L]

En revanche je n'y parviens toujours pas avec domaine/tourisme/titre-du-billet (sans le ? dans l'url) que voudrais aussi rediriger vers domaine/tourisme/post/titre-du-billet.



Pour l'instant donc, j'ai résolu le problème avec un RedirectPermanent pour chaque titre whistling.gif mais j'aimerais mieux quelque chose de générique, et surtout comprendre ce que je fais mal.


Partager ce message


Lien à poster
Partager sur d’autres sites

Je termine mon monologue pour clore ce sujet, ce n'était pas si simple



En fait il y avait plusieurs schémas d'URLs dans les backlinks, en effet certains étaient en place depuis une dizaine d'années et le format des URLs avait changé plusieurs fois depuis...



Au moyen de l'outil de repérage des erreurs 404 de GWT, j'ai pu trouver la totalité de ces liens et les rediriger correctement.



Les différents liens avaient les structures suivantes


  • tourisme/index.php?année/mois/jour/id-titre-du-billet
  • tourisme/index.php?titre-du-billet
  • tourisme/?titre-du-billet
  • tourisme/titre-du-billet

Tous redirigés maintenant vers tourisme/post/titre-du-billet \o/



Heureusement les publications du Hub sur la réécriture m'ont beaucoup aidé, et après l'absorption de plusieurs cachets d'aspirine, j'ai pu m'en sortir et je remercie encore Dan pour sa pédagogie smartass.gif


Partager ce message


Lien à poster
Partager sur d’autres sites

Heureusement les publications du Hub sur la réécriture m'ont beaucoup aidé, et après l'absorption de plusieurs cachets d'aspirine, j'ai pu m'en sortir et je remercie encore Dan pour sa pédagogie smartass.gif

Je ne voulais pas sembler prétentieux et te dire "tu as tout ce qu'il te faut, expliqué dans les publications du Hub".

Très heureux que tu y aies trouvé ton bonheur !

Merci pour ton compliment.

Dan

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant

×