Redirection 301 des url d'un site déjà existant

WRInaute discret
Salut,

J'aimerai qu'une personne (ou plus) qui s'y connait bien en redirection 301 me dise comment m'y prendre avec la redirection que je veux créer.

J'ai un site dont j'aimerai réécrire l'url des pages d'articles.

L'url d'origine est écrite sous cette forme :
index.php?page=article&id=123

Quand je la réécris cela donne (la forme actuelle) :
article123.html

Et j'aimerai faire une réécriture du genre :
123-nom-de-l-article.html

Avec ce bout de code j’arrive à faire la réécriture que je désire:

Code:
RewriteRule ^([0-9]+)-([0-9a-z-]+).html$ article$1.html [L]

Maintenant la redirection, c’et une autre histoire !!
Le problème c'est que toutes les pages de mon site sont déjà indexées et bien positionnées et je n'aimerai pas perdre ça.
Comment faire pour faire une réécriture et dire à Google que ma première redirection est redirigée en 301 vers la nouvelle et ce pour toutes les page d'articles de mon site. Je ne sais pas si c'est clair.

En gros j'aimerai faire un truc du genre :

Rediriger en 301 -> article([0-9]+).html
Vers -> $1-([0-9a-z-]+).html

Peu importe ce qui se trouvera dans le ([0-9a-z-]+) puisque c'est moi qui réécrira l'url de la même façon à chaque fois donc aucun risque de duplicate content.

J'ai pas arrêté d'y pensé depuis 2 jours mais je ne vois toujours pas comment m'y prendre.

Merci d'avance pour vos réponses.
 
WRInaute discret
Dois je comprendre par le manque de réponses que ce que je veux faire n'est pas possible ?

SVP, si quelqu'un a une réponse quelle qu'elle soit cela m'aiderai à chercher dans d'autres directions.

Merci.
 
WRInaute impliqué
Tu veux à partir de article123.html arriver à 123-nom-de-l-article.html ?
Le problème de cette réécriture, c'est que tu ne connais pas à l'avance 123-nom-de-l-article.html.

Donc différentes solutions :
* tu mets une à une les redirections dans ton htaccess. Cela ne concerne que les anciennes adresses.
* tu fais une redirection directement en PHP (ou autre langage). Tu regardes la ressource demandée, si elle correspond à une adresse du genre article123.html, alors tu récupères la correspondance, et tu lances la redirection directement en PHP.
* tu gardes article123.html pour les anciennes adresses.

Sinon, n'oublie pas d'envoyer le code 301 indiquant une redirection permanente.
 
WRInaute accro
je te conseil de mettre en place ta nouvelle règle de réécriture avec le .htaccess et de faire les redirections en php

en php vite fait (po tester) ca donne un code comme ca

Code:
<?php
$url = $_SERVER["REQUEST_URI"];
if (preg_match('#article[0-9]+\.html#s',$url,$matches))
$q = mysql_query("SELECT * FROM tb WHERE id='$matches[0]'");
$r = mysql_fetch_array($q);
header("Status: 301 Moved Permanently");
header("Location: http://".$_SERVER['HTTP_HOST']."/$matches[0]-".$r['titre'].".html");
?>

la demarche:
tu recupere le N° de l'article, ensuite tu fait une requete pour avoir le titre, et tu rediriges avec l'ensemble
 
WRInaute discret
Merci à vous deux, je vais prendre vos conseils en compte afin de décider de la meilleur solution pour régler mon problème.
 
Discussions similaires
Haut