Url rewriting + redirection 301 + htaccess

WRInaute passionné
Salut,

J'ai lu beaucoup de threads sur ce forum concernant l'url rewriting et les redirection 301, j'ai essayé beaucoup de choses sur mon site mais rien ne fonctionne correctement.

Voici ce que je souhaite faire :

j'ai des url du type http://www.monsite.com/index.php?rub=societe que je souhaite transformer en http://www.monsite.com/societe.html et je souhaite mettre une redirection 301 de mes anciennes url vers mes nouvelles (rien de bien compliqué en thérie, mais en pratique...).

J'ai donc opté pour un fichier htaccess que voici :

RewriteEngine on
RewriteRule ^([a-zA-Z]*).html$ /index.php?rub=$1 [L]

Pas de problème avec ce bout de code il marche parfaitement, l'url rewrinting fonctionne bien.

Mon souci est maintenant de mettre en place la redirection 301 dans ce fichier htaccess, là j'ai essayé pendant plus de 3 jours des bouts de codes trouvé sur des forums mais rien ne marche... j'en ai un peu ras le bol, quelqu'un a-t-il une solution qui marche ?

Je suis hébergé chez OVH en 60gp.

Merci d'avance pour votre aide et vos conseils.
 
WRInaute accro
Code:
RewriteEngine on
RewriteRule ^([a-zA-Z]*).html$ /index.php?rub=$1 [L] 
RewriteRule ^index.php?rub=([a-zA-Z]*).html$ /$1.html [R=301,L]
peut etre ? (sans garantie)
 
WRInaute passionné
Merci nickargall pour ta réponse mais ça ne marche pas.

La redirection fonctionne mais la page qui a été rewritilisé ne s'affiche pas correctement.

Une autre suggestion ?
 
WRInaute passionné
Problème résolu !

Au lieu de passer par un htaccess pour mes redirections j'ai mis en place une redirection html :

<?php
if(ereg("rub=",$_SERVER['REQUEST_URI'])==1)
{
if(getenv("HTTP_HOST") == "127.0.0.1"){$url_actuelle = str_replace("/monsite.com/index.php?rub=", "", $_SERVER['REQUEST_URI']);}
else{$url_actuelle = str_replace("/index.php?rub=", "", $_SERVER['REQUEST_URI']);}
header("HTTP/1.1 301 Moved Permanently");
if(getenv("HTTP_HOST") == "127.0.0.1"){header("Location: http://127.0.0.1/monsite.com/".$url_actuelle.".html");}
else{header("Location: http://www.monsite.com/".$url_actuelle.".html");}
exit;
}
?>

Ce code est placé au tout debut du code de ma page index.php et ça marche très bien....
 
X
xescorp
Guest
Heureusement ce n'est pas une redirection HTML :D, car c très peu apprécié par les moteurs :
<meta http-equiv="refresh" content="0;url=http://www.monsite.com/index.php">

La solution que te proposait nickargall doit être à peu près correct.

Pour un système avec id cela donne ca :

RewriteRule ^[a-z0-9-]+/rubrique-([0-9]+).html$ rubrique.php?id=$1 [QSA,L]
RewriteRule ^[a-z0-9-]+/rubrique-([a-z0-9-]+).html$ rubrique.php?alias=$1 [QSA,L]
 
Nouveau WRInaute
Je ne suis moi meme pas encore vraiment un pro de rewriting, et j'ai un peu le meme souci que poupilou, j'ai le code suivant:
RewriteEngine on
RewriteRule ^bureau.htm$ /?page=1

ce qui me donne la reecriture, mais j'aimerai aussi avoir une redirection 301, qui si je me rends sur www.monsite.com/?page=1 me redirige automatiquement vers www.monsite.com/bureau.htm

Merci de m'eclairer.
 
WRInaute accro
poupilou a dit:
...et je souhaite mettre une redirection 301 de mes anciennes url vers mes nouvelles (rien de bien compliqué en thérie, mais en pratique...).

Inutile de faire du 301. les moteurs vont suivrent tes nouveaux liens, voir que les anciens liens sont morts et réindexer tout ca sans avoir besoin d'un quelconque 301. Experience à l'appuie :D
 
Nouveau WRInaute
yes mais en fait je voulais faire ca, afin d'avoir à eviter de reprogrammer l'ensemble de mes liens sur la source du dit site.

merci :wink:
 
Discussions similaires
Haut