Pat AfterMoon Posté 30 Janvier 2008 Posté 30 Janvier 2008 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 OnRewriteRule ^([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
captain_torche Posté 30 Janvier 2008 Posté 30 Janvier 2008 Dans les options de ta règle de réécriture, rajoute R=301, pour que les anciennes pages soient redirigées. Sans ça, tu possèdes deux pages avec le même contenu, et tu te crées un risque de duplicate content.
Pat AfterMoon Posté 30 Janvier 2008 Auteur Posté 30 Janvier 2008 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 OnRewriteRule ^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 ?
Pat AfterMoon Posté 30 Janvier 2008 Auteur Posté 30 Janvier 2008 (modifié) Finalement j'ai fais comme ça dans le .htaccess : RewriteEngine OnRewriteRule ^([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 iciif ( 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é 30 Janvier 2008 par Pat AfterMoon
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant