Redirection permanente de 600 pages : comment faire ?

WRInaute passionné
Bonjour,

Je modifie actuellement un site. Plus de 600 pages sont actuellement référencées par Google et leur accès via les urls référencées a a été détruit. N'ayant jamais pratiqué l'url rewriting (il me semble qu'il s'agit de la méthode à employer dans mon cas :- ?), j'aimerais avoir quelques conseils pour effectuer la transformation suivante :

-www.site.com/titre_du_texte_338.html --> -www.site.com/page.php?id=338&titre=titre-du-texte

Je ne sais absolument pas comment faire la chose. Ca se passe dans le .htaccess c'est ça ?
 
WRInaute passionné
Code:
Options FollowSymLinks
RewriteEngine on 
RewriteRule ^(.*)-([0-9]*)\.html$ page.php?id=$2&$1 [L]

C'est bien dans le htaccess
 
WRInaute passionné
Pas tout à fait encore :(.

-www.boiteareves.com/reve.php?id=338&titre=reve_la_banquise
ne donne toujours pas
-www.boiteareves.com/reve.php?id=338&titre=La-banquise

Avec le code de correiaj l'url reste la même (en remplaçant le L par R). [Edit : en fait non, c'était une mauvaise manip : ça marche presque en fait]
Avec le code de borower l'url devient (toujours en remplaçant L par R) : -www.boiteareves.com/home/boiteare/www/reve.php?id=338&titre=reve_la_banquise (si c'était -www.boiteareves.com/reve.php?id=338&titre=reve_la_banquise ça afficherait déjà la page, pas tout à fait avec l'url voulue mais ce serait déjà mieux :) )
 
WRInaute impliqué
yazerty a dit:
Bonjour,

Je modifie actuellement un site. Plus de 600 pages sont actuellement référencées par Google et leur accès via les urls référencées a a été détruit. N'ayant jamais pratiqué l'url rewriting (il me semble qu'il s'agit de la méthode à employer dans mon cas :- ?), j'aimerais avoir quelques conseils pour effectuer la transformation suivante :

-www.site.com/titre_du_texte_338.html --> -www.site.com/page.php?id=338&titre=titre-du-texte

Je ne sais absolument pas comment faire la chose. Ca se passe dans le .htaccess c'est ça ?
Pour moi tu veux que lorsque l´on tape:
-www.site.com/titre_du_texte_338.html
apache appelle le fichier -www.site.com/page.php
avec les variables id=338&titre=titretexte
Donc c´est bien ce que je t´ai donné:
RewriteEngine on
RewriteRule ^(.+)_([0-9]+)\.html$ page.php?id=$2&titre=$1 [L]

Borower:
"_" et "-" ne sont pas les même caractères. et option FollowSymlink n´a rien à faire dans un .htaccess. Cela doit se trouver dans le httpd.conf si tu as un hébergement digne de ce nom... ;-)
 
WRInaute impliqué
Peut être serait-il plus simple si tu nous donnais le caractère remplacant les espaces dans ton titre: est-ce _ ou - ou autre.
Et ce serait bien de ne pas utilser le même que celui qui sépare les deux valeurs de variable...
 
WRInaute passionné
Je le refais parce que je suis en train de m'emmêler les pinceaux je crois :oops:.

Google indexe actuellement les pages suivantes :
-http://www.boiteareves.com/reve_la_banquise_338.html

Ces pages sont maintenant sous la forme :
-http://www.boiteareves.com/reve.php?id=338&titre=La-banquise
(donc avec des variables en plus, des _ remplacés par des -, le "reve" en mois avant le titre...)

J'aimerais donc que Google comprenne que les pages qu'il a en mémoire sont devenues reve.php....

J'ai laissé le code que tu m'a donné sur mon .htaccess correiaj. Sauf que j'ai modifié le [L] en [R] pour voir la transformation. Il donne une url sous cette forme là :
-http://www.boiteareves.com/home/boiteare/www/reve.php?id=338&titre=reve_la_banquise

Il y a un problème de chemin d'accès non ?
Je passe le titre dans l'url mais l'id seul permet d'afficher la page.
Pour le titre c'est avec des tirets, sans le "reve" au début, et avec une majuscule (si Google se fiche des majuscules alors tant pis).
C'est possible avec le rewritting :- ?
 
WRInaute impliqué
Non, c´est juste que dimanche, c´était Boca - Pumas. Et donc après une telle fête, c´est dur de se remettre à bosser ;-)

Ça devient plus clair:

Alors dans ton cas, essaye avec une adresse absolue:
ça reglera le probleme du chemein et de la redirection
RewriteEngine on
RewriteRule ^reve_([^_]+)_(.*)_([0-9]+)\.html$ /reve_$1-$2_$3.html
RewriteRule ^reve_(.+)_([0-9]+)\.html$ http://www.example.com/reve.php?id=$2&titre=$1

Essaie d´abord avec la seconde règle. Si ça marche essaye avec les 2. La première sert à remplacer les _ par des -,...
Voila
 
WRInaute passionné
Magniifiiique :D :D :D !

Un très très grand merci à toi correiaj !

Si j'ai bien compris lors de la prochaine vérification de son index Google comprendra que les pages sous la forme -www.boiteareves.com/reve_la_banquise_338.html sont devenues les pages -www.boiteareves.com/reve.php?id=338&titre=la-banquise
et donc Google effacera les anciennes url au profit des nouvelles. Les nouvelles url bénéfécieront du PR des anciennes url.
J'ai bon ?

Autre question : je peux mettre un [R] à la fin du rewrite, pour que les visiteurs qui arrivent par là aient la bonne url (si ils veulent la mettre en favori ou autre...) ? Ca n'influencera rien ?
 
WRInaute impliqué
Ben en fait, ce qui serait le mieux serait ceci pour google et compagnie:

RewriteEngine on
#remplace les _ en -
RewriteRule ^reve_([^_]+)_(.*)_([0-9]+)\.html$ /reve_$1-$2_$3.html

#Redirection propre vers les nouvelles URL
RedirectMatch permanent ^reve_(.+)_([0-9]+)\.html$ http://www.example.com/reve.php?id=$2&titre=$1

Mais tu peux simplement mettre un drapeau redirection 302 a la règle précedente ( [R=302] )
 
WRInaute passionné
301 non dans mon cas (redirection permanente) ?

Si l’argument code n’est pas précisé, une redirection 302 (déplacé temporairement) est effectuée. Si vous souhaitez faire savoir au navigateur/robot qu’une page a été remplacée définitivement, utiliser le code 301 comme dans :
RewriteRule ^ancien\.html$ http://domaine.tld/nouveau.html [R=301,L]

http://www.webmaster-hub.com/publication/article5.html (je viens de découvrir cette page via un autre post de WRI)

Ca me donnerait donc :
Code:
RewriteEngine on
RewriteRule ^reve_([^_]+)_(.*)_([0-9]+)\.html$ /reve_$1-$2_$3.html
RewriteRule ^reve_(.+)_([0-9]+)\.html$ http://www.boiteareves.com/reve.php?id=$2&titre=$1 [R=301,L]
RewriteRule ^commentaire_([^_]+)_(.*)_([0-9]+)\.html$ /reve_$1-$2_$3.html
RewriteRule ^commentaire_(.+)_([0-9]+)\.html$ http://www.boiteareves.com/reve.php?id=$2&titre=$1 [R=301,L]
(ui j'ai aussi la même chose à faire avec les pages "commentaires"...)
 
WRInaute passionné
en faite quand je mettais - a la place de _ c'etait pour un meuilleur eferencement.
_ n'est pas un séparateur de mot.
Utilise donc le -
 
WRInaute passionné
Tu es tout excusé :wink: !

Donc je laisse le code de mon message précédent (avec [R=301,L]) et j'attends que Google fasse son tour de piste :). Dites le moi si jme trompe hein :?, c'est la première fois que je mets en place un rewrting...

Borower > actuellement c'est bien des "-" et pas des "_". Ce sont les anciennes adresses qui utilisaient les "_".
 
WRInaute passionné
Bah on attendra on est pas pressé, le rêve ça vient doucement :).

Et puis laisser le .htaccess en l'état pour les x prochains mois n'aura pas d'incidences néfaste...

Mais merci de préciser cela. Ca m'évitera de paniquer au bout de deux semaines :wink:.

Bonne soirée :).
 
Discussions similaires
Haut