Aller au contenu

Autoriser les anciennes URL mais afficher les nouvelles


Sujets conseillés

Sur un de mes sites je viens d'implémenter une réécriture d'URLs basique.

Avant c'était :

-www.monsite.com/?page=sujet

Maintenant c'est :

-www.monsite.com/sujet.html

Le code dans l'htaccess est :

RewriteEngine On
RewriteRule ^([0-9a-zA-Z]+)\.html$ /index.php?page=$1 [L]

Tout ça fonctionne à priori très bien. Mais dans l'index de Google, mes pages sont encore référencées sous la forme -www.monsite.com/?page=sujet ce qui fonctionne toujours d'ailleurs.

1/ Ca m'embête que venant de google les visiteurs voient -www.monsite.com/?page=sujet. Je voudrais que le lien fonctionne, mais qu'ils voient dans leur barre d'adresse la nouvelle URL -www.monsite.com/sujet.html

2/ Est ce qu'il ne faudrait pas que je signale à google que -www.monsite.com/?page=sujet est maintenant -www.monsite.com/sujet.html, est si oui, comment ?

Bien sur en interne dans mon site, il n'existe plus aucun lien pointant vers une URL ancienne formule. Et à priori, les quelques backlink pointant sur le site vont à la racine -www.monsite.com

Lien vers le commentaire
Partager sur d’autres sites

Heu... si je rajoute R=301 à la règle actuelle, ce sont les gens tapant une URL de type -www.monsite.com/sujet.html qui être vont recevoir le code de redirections, non ?

En fait il faudrait que ceux tapant -www.monsite.com/?page=sujet reçoivent le code 301, que leur navigateur affiche -www.monsite.com/sujet.html mais que sur le serveur cela exécute -www.monsite.com/?page=sujet.

Je ne connais encore bien RewriteRule donc je pensais passer par un fichier php intermédiaire pour faire un truc de ce genre :

RewriteEngine On
RewriteRule ^page=([0-9a-zA-Z]+)$ /redirect.php?page=$1 [L]
RewriteRule ^([0-9a-zA-Z]+)\.html$ /index.php?page=$1 [L]

et dans redirect.php

Header('location: http://www.monsite.com/'.$page.'.html');

oui ? non ?

Lien vers le commentaire
Partager sur d’autres sites

Finalement j'ai fais comme ça dans le .htaccess :

RewriteEngine On
RewriteRule ^([0-9a-zA-Z]+)\.html$ /index.php?page2=$1 [L]

Et ça dans le index.php

<?php

// Les anciennes url avec "page=NomPage" sont traitées ici
if ( isset($_GET['page']) )
{
header('HTTP/1.0 301 Moved Permanently');
Header('location: http://www.monsite.com/'.$_GET['page'].'.html');
exit();
}

// Les nouvelles url avec "NomPage.html" rewritées en "page2=NomPage" sont traitées au delà de cette ligne

J'ai eu un peut de mal parce que je pensais le faire avec le htaccess, mais finalement cela fonctionne comme ça. D'après l'outil du HUB j'ai bien la bonne redirection 301.

Merci aux auteurs des articles du HUB sur le htaccess, ils m'ont quand même bien aidé.

Modifié par Pat AfterMoon
Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...