Bonjour à tous, Voici un petit problème a résoudre : J'ai procédé à une modification du nom de mes pages d'un site. Ancien nom au format : Article-120.html Le nouveau nom est maintenant : Article-titre-article-120.html Ces pages sont rewrité depuis : initialement j'avais Article.php?id=$1 je l'ai remplacé par Article.php?id=$1&titre=$2 Je voudrais faire une redirection permanente pour indiquer le nouveau format de la page Comment peut on faire ça proprement sans indiquer la redirection pour chaque page. Merci par avance pour votre aide.
Dans article.php, pseudo code : Code: $id = $_GET['id']; if (!isset($_GET['titre'])) { // Chercher le bon titre (en base de données par exemple) $titre = "abcdef"; header('HTTP/1.1 301 Moved Permanently'); header('Location: Article-'.$titre.'-'.$id.'.html'); exit; } $titre = $_GET['titre']; // suite du code avec $id et $titre présents.
Je dirais même: Dans article.php, pseudo code : Code: $id = $_GET['id']; if (!isset($_GET['titre'])) { // Chercher le bon titre (en base de données par exemple) $titre = "abcdef"; if($_SERVER['REQUEST_URI'] != 'Article-'.$titre.'-'.$id.'.html') { header('HTTP/1.1 301 Moved Permanently'); header('Location: Article-'.$titre.'-'.$id.'.html'); exit; } } $titre = $_GET['titre']; // suite du code avec $id et $titre présents. Comme ça tu évites des redirections même si c'est déjà la bonne url ^^
Je ne suis pas certain que cela corresponde à mon besoin car le but est de récupérer les accès par les liens présents dans les moteurs sous la forme : Article-123.html et non Article-123.php. Actuellement les pages du type Article-123.html n'existent plus. Le seul élément interesant est de récupérer l'id de l'article mais après la seule chose qu'il me semble possible c'est ça : Code: RewriteRule ^Article-(.*).html$ /article.php?id=$1 [R=301] Mais c'est pas propre et sans interêt.
Après une longue soirée de tentatives infructueuses, je me demande si il ne serait pas plus simple de forcer les moteurs de recherche à revisiter totalement le site. Y a t'il un moyen ... Avez vous une idée :?: .... :idea:
La solution que t'ont données Itresens et YoyoS est celle qui correspond à ton besoin. Dans la page source, on vérifie l'url par laquelle on est arrivé, et si cette url correspond à l'ancienne version, elle indique une redirection permanente vers la nouvelle url. Revisiter le site ne changera rien à ton vrai problème, qui est de récupérer les backlinks existants, et d'éviter des erreurs 404 là dessus. Le plus simple pour faire revisiter est de resoumettre ton plan de site.
Moi je ne supprimerais pas mes anciennes règles d'écriture si j'étais toi, j'en créerais seulement des nouvelles pour rediriger tout cela gentillement vers les nouvelles.
Le code PHP de yoyos fait une bonne partie du boulot. Il faut en plus les deux règles suivantes: Code: RewriteRule ^Article-(.*)-(.*)\.html$ /article.php?titre=$1&id=$2 [L] RewriteRule ^Article-(.*).html$ /article.php?id=$1 [R=301] La première réalise l'affichage de tes nouvelles adresse html. La deuxième fait une redirection des anciennes adresses html vers la page PHP dont le code fait a nouveau une redirection vers les nouvelles pages html.
Ah je comprends mieux, effectivement, j'avais retiré l'ancienne règle ça ne pouvais plus marcher. Merci, je vais mettre tout cela en ligne et je vous dirais ...
Vraiment très propre cette méthode. Merci pour votre collaboration ça marche à merveille. Je viens même de communiquer cette astuce qui mérite d'être connue à un ami qui a vécu l'enfer de la chute dans les classements à cause de cela. Bon Dimanche à tous,