SOS : rewritter proprement des pages déja indexées.

WRInaute discret
Je veux rewritter des pages dynamiques d'un de mes sites :
envoyer-message.php?num=1234
en
annonce-1234.htm

Dans le fichier .htaccess j'ai donc mis :
Code:
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^annonce-([0-9]+)\.htm$  envoyer-message.php?num=$1 [L]

Ca marche nickel, la page annonce-1234.htm s'affiche correctement.

Comme les pages dynamiques sont déja indexées par les moteurs de recherche, je voudrais rediriger les pages envoyer-message.php?num=1234 vers annonce-1234.htm
Et là, je bloque : j'ai essayé une redireccion php mais ça boucle (après reflexion je comprend pourquoi : la page php appelle la page htm qui appelle la page php etc etc).
J'essaye ensuite de faire la redirection par le fichier .htaccess mais je n'y arrive pas non plus.

SOS !!!
 
WRInaute accro
Dans ta page, tu t'arranges pour "créer" dans une variable que tu appelles par exemple $rewrited_uri, sur base des éléments communiqués dans l'url "dynamique", l'URI de la page "que ça devrait être".

ie: envoyer-message.php?num=1234
>> tu sais que $num est "1234"
>> tu sais comment devrait être ta page "statique" (annonce-1234.htm)
>>...

Code:
<?
$rewrited_uri = 'annonce-'.$num.'.html';
if($_SERVER['REQUEST_URI'] != $rewrited_url)
 {
 header("HTTP/1.1 301 Moved Permanently");
 header("Location: http://example.com/".$rewrited_uri");
 exit;
  die("Redirection");
 }
?>

>> Si l'url de la page de $num=1234 n'est pas annonce-1234.html, alors tu redirige.

NB: Il faut peut-être vérifier qu'il ne manque pas un "/" quelquepart: je ne sais plus si $_SERVER['REQUEST_URI'] renvoie l'URI avec un / devant ou pas... Tu adapteras en fonction ;)

Démo "en live":

-http://fr.indexweb.info/analyse/159-web-rank-info.html
-http://fr.indexweb.info/analyse/159-web-rank-info-est-mon-site-prefere-j-adore-ce-site.html
-http://fr.indexweb.info/analyse/159-spam-spam-spam-spam-spam-spam.html

:D
 
WRInaute occasionnel
Plus simplement tu ecrit ta regle de rewrite ainsi :

RewriteRule ^annonce-([0-9]+)\.htm$ envoyer-message.php?num=$1&rewrited=true [L]

Et dans envoyer-message.php tu testes isset($_GET['rewrited'])

Lionel
 
WRInaute discret
En effet, j'ai dû modifier un peu le code mais ça marche nickel !

Code:
	$rewrited_uri = "/annonce-$num.htm"; 
	if($_SERVER['REQUEST_URI'] != $rewrited_uri) 
	{ 
		header("Status: 301 Moved Permanently", false, 301);
		header("Location:http://www.example.com$rewrited_uri");
	 }


Merci merci merci HawkEye !!!!
 
WRInaute discret
Au fait, tu sais pourquoi la redirection ne marche pas en utilisant RedirectMatch permanent dans le .htaccess ???
 
WRInaute accro
Juste au passage : si les pages ont été bien indexées, pourquoi s'embetter avec l'UR ? Et plus grave encore : pourquoi prendre le risque de voir toutes ses pages "plonger" en "pages similaires" ? :)

M'enfin, ce que j'en dis moi ;-)
 
WRInaute discret
mahefarivony, justement, le problème est que j'ai eu une désindexation massive sur google et ce sont les pages que j'ai décidé de rewritter qui ont connu la plus forte désindexation (chute de 5000 pages indexées à seulement 7 pages indexées)

Vu que les nouveaux sites que j'ai fait sont 100% rewrittés et qu'ils ont été fullcrawlés en 2/3 semaines, je me suis dit que c'était peut-être le moment de rewritter un de mes anciens sites.
Je vous dirais si google apprécie ou pas...
 
WRInaute discret
Nouvelles du matin : mon site a été full crawlé !!!! Je passe de 380 pages indexées à 5530 pages indexées !! Je ne sais pas si c'est directement lié au rewritting que j'ai mis en place hier mais en tout cas c'est la bonne nouvelle du matin !!!
:D :D
 
Discussions similaires
Haut