Site multilingue, url rewritting et duplicate content.

Nouveau WRInaute
Bonjour,

Soit un site d'abord mis en ligne en français uniquement et comportant un grand nombre de pages via des paramètres.
Ensuite j'ai rajouté un paramètre langue pour créer une version anglaise.
Puis, j'ai découvert sur ce site l' url rewriting...

Voici donc mon fichier .htaccess :

-----------------------------------------------------------------------------------------------------------------------------------

AddType x-mapp-php5 .php

Options +FollowSymlinks
RewriteEngine on
RewriteRule ^(fr|en)-game-([0-9]+).html$ /game.php?game=$2&lang=$1 [L]
RewriteRule ^(fr|en)-plan.html$ /plan.php?lang=$1 [L]
RewriteRule ^(fr|en)-partenaires.html$ /partenaires.php?lang=$1 [L]
RewriteRule ^(fr|en)-res_sondages.html$ /res_sondages.php?lang=$1 [L]
RewriteRule ^(fr|en)-facebook.html$ /facebook.php?lang=$1 [L]
RewriteRule ^(fr|en)-play-([0-9]+).html$ /play.php?game=$2&lang=$1 [L]
RewriteRule ^([a-z]+)-(fr|en)-page([0-9]+)-tri([0-9]+).html$ /index.php?cat=$1&page=$3&tri=$4&lang=$2 [L]

-------------------------------------------------------------------------------------------------------------------------------------

Le soucis est que je suis confronté à du "duplicate content" dans la mesure où Google référence deux pages identiques
sous des noms différents (avant et après rewritting) comme :
game.php?game=128&lang=fr
et fr-game-128.html

Est-ce que ces pages en doubles ne peuvent pas nuire au référencement du site ?
D'ailleurs, je viens de perdre 1 point de PageRank :(

En fin de chaque règle de rewritting j'ai essayer de remplacer [L] par [L,R=301] pour indiquer de ne plus référencer les urls non réécrites par une redirection 301. Seulement, écrite ainsi, l'url rewritting ne fonctionne pas.

Merci de m'aider à résoudre ce problème.
 
WRInaute occasionnel
Bonjour,

Tu peux rajouter un paramtrère dans ta réécriture, par exemple $param et tu lui donnes une valuer, par exemple, 1.

RewriteRule ^(fr|en)-game-([0-9]+).html$ /game.php?game=$2&lang=$1&$param=1 [L]

Ensuite, tu vérifies la présence de $param=1 dans chaque fichier (game.php, page.php, ...).

Si tel n'est pas le cas, tu envoies un header 301 avec la nouvelle adresse:

Code:
header("Status: 301 Moved Permanently"); 
header("Location: http://www.example.com/fr-game-15.html");

Ainsi, toutes les vieilles adresses recevront un 301, et toutes celles qui sont réécrites afficheront directement la page désirées.
 
Nouveau WRInaute
Merci pour cette réponse.

Êtes vous sûr que ce soit $param et non param ? je pencherai plus pour

RewriteRule ^(fr|en)-game-([0-9]+).html$ /game.php?game=$2&lang=$1&param=1 [L]

Une question cependant, doit on appliquer cette procédure définitivement ou peut on considérer après un certain temps que les moteurs de recherche ne référencent plus les anciennes adresses ?
 
WRInaute occasionnel
dubsharry31 a dit:
Merci pour cette réponse.

Êtes vous sûr que ce soit $param et non param ? je pencherai plus pour

RewriteRule ^(fr|en)-game-([0-9]+).html$ /game.php?game=$2&lang=$1&param=1 [L]

Oui, tu as raison, c'est param sans le $ devant.

Une fois que Google et les autres moteurs auront remplacé toutes les anciennes Urls, plus besoin de l'appliquer.
De toute façon, ça ne coûte pas grand chose en ressources.

à bientôt
 
Nouveau WRInaute
Bonjour,

J'ai effectué un essai sur une page très peu fréquentée du site avec le code suivant:

Code:
<?php
include_once ("lang.php");
if ( $_GET['param'] != 1 )
{
	header("Status: 301 Moved Permanently");
	if ( $lang == 'fr' )
		header("Location: http://free-flash-games.fr/fr-res_sondages.html");
	else
		header("Location: http://free-flash-games.fr/en-res_sondages.html");
}
 ?>

La redirection fonctionne, si la page res_sondage.php est demandée, j'obtiens bien les pages
fr-res_sondages.html ou en-res_sondages.html suivant la variable lang .

Ma question est de savoir si le test
Code:
if ( $_GET['param'] != 1 )
est optimal ?
Je voudrais en être sûr avant d'appliquer cette procédure à l'ensemble du site.

Merci
 
Discussions similaires
Haut