Redirection permanente des pages d'un domaine [R=301]

Nouveau WRInaute
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.
 
WRInaute occasionnel
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.
 
WRInaute accro
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 ^^
 
Nouveau WRInaute
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.
 
Nouveau WRInaute
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:
 
WRInaute accro
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.
 
WRInaute accro
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.
 
WRInaute impliqué
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.
 
Nouveau WRInaute
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 ...
 
Nouveau WRInaute
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,
 
Discussions similaires
Haut