Url rewriting et duplicate content

Nouveau WRInaute
Salut à tous,
j'ai récemment mis en place l'url rewriting sur mon site :
index.php?page=accueil --> accueil.html

Tout fonctionne parfaitement, mais je me demande si je ne risque pas d'avoir un problème de contenu dupliqué. En effet, mes pages de type "index.php?page=accueil" sont déjà toutes indexées sur Google !

Mon problème est exactement pareil que ce topic : https://www.webrankinfo.com/forum/t/url-rewriting-duplicate-content.47077/

En lisant les réponses, j'ai essayé ceci, dans mon htaccess :
RewriteRule ^([0-9a-zA-Z-]+)\.html$ /crypto/index.php?page=$1 [L, R=301]

C'est le bazar entre [crochets] qui m'intéresse : j'ai rajouté, le "R = 301" (sans trop savoir ce que ça signifie mais bon).
Mais, avec ce truc en plus, on dirait que l'url rewrite fonctionne "à l'envers" !
Je suis sur mon site, je clique sur un lien type "accueil.html" et dans la barre d'adresse je vois "index.php?page=accueil" !!


Qui peut m'éclaircir les idées, au sujet du duplicate content et du R=301 ??

merci


PS : il semble qu'on peut interdir aux bots d'indexer certaines pages grâce au fichier robots.txt (avec un "Disallow machin").
Quelle méthode utiliser dans mon cas ? robots.txt ou R=301, ou autre ??
 
WRInaute accro
Bonjour
A mon humble avis, il faut faire deux règles : une pour la réécriture, une pour la redirection en 301. J'ai eu le même souci que toi en ajoutant [ R=301] a la fin d'une règle de réécriture
 
WRInaute discret
Swing a dit:
j'ai rajouté, le "R = 301" (sans trop savoir ce que ça signifie mais bon).

Regarde donc sur google "codes d'erreurs http" quand c'est comme ça !!
le 301 signifie au client que la page est redirigée définitivement donc pas de problème pour le duplicate content. C'est justement la solution a adopter.

Swing a dit:
C'est le bazar entre [crochets] qui m'intéresse : j'ai rajouté, le "R = 301" (sans trop savoir ce que ça signifie mais bon).
Mais, avec ce truc en plus, on dirait que l'url rewrite fonctionne "à l'envers" !
Je suis sur mon site, je clique sur un lien type "accueil.html" et dans la barre d'adresse je vois "index.php?page=accueil" !!

ça n'a rien à voir, et c'est assez bizarre ce que tu nous explique là, le L signifie "last" : c'est la dernière règle qu'il prendra en compte pour cette condition.
déjà voilà une petite correction:
RewriteRule ^([0-9a-zA-Z]+)\.html$ /crypto/index.php?page=$1 [L, R=301]
mais ça ne changera certainnement pas grand chose à ce que tu expliques.
 
Nouveau WRInaute
Merci à vous deux pour vos réponses,

Bonjour
A mon humble avis, il faut faire deux règles : une pour la réécriture, une pour la redirection en 301. J'ai eu le même souci que toi en ajoutant [ R=301] a la fin d'une règle de réécriture
Comment ça deux règles ? Tu veux dire deux fois la même ligne, mais une avec [L] et une avec [R=301] ?? (désolé si ça paraît stupide comme question, je débute ^^)

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

déjà voilà une petite correction:
RewriteRule ^([0-9a-zA-Z]+)\.html$ /crypto/index.php?page=$1 [L, R=301]
Ce que tu me proposes est strictement identique à ce que j'ai déjà essayé :p
Donc, toujours le même problème en effet...


Vous pensez que la piste du robots.txt n'est pas à exploiter??


Merci encore
 
WRInaute discret
si tu regardes bien la syntaxe ce n'est pas identique. ;)

Pour le coup des deux règles je ne voit pas l'intérêt ou alors je ne comprends pas ce qu'il a en tête.

Quant au robot.txt : si tu veux désindexer tes pages c'est la meilleure solution.
 
WRInaute accro
CE que j'ai en tête (je l'ai pas testé) est pas super clair je l'admets.

Simplement que j'avais aussi mis des règles de réécriture en place.
Ces règles fonctionnaient.
J'ai rajouté [R=301] a la fin de ces règles, les liens href="page-rewritee.html " marchaient mais m'envoyaient vers des pages affichant dans la barre d'adresse page.php?id=4&sdf=4& .....

J'ai laissé tomber.
On m'a indiqué de doubler mes règles de réécritures (sans [R=301]) avec des règles de redirection.

voili voilou
 
Nouveau WRInaute
et c'est assez bizarre ce que tu nous explique là, [...]
RewriteRule ^([0-9a-zA-Z]+)\.html$ /crypto/index.php?page=$1 [L, R=301]
mais ça ne changera certainnement pas grand chose à ce que tu expliques.

Effectivement, ça ne change pas grand chose, mais je confirme ce que dit Swing, à savoir:

1. On modifie le lien sur le site en page-réécrite.html

2. on écrit une règle type :
RewriteRule ^page-réécrite.html$ page-a-réécrire.php [L, R=301]

3. on clique sur le lien page-réécrite.html et on est redirigé vers page-a-réécrire.php

Ce qui est logique d'ailleurs puisqu'on place une redirection dans la règle,
R=...

A mon humble avis, le plus simple pour toi est d'enlever le R=301 et d'ajouter une redirection dans tes fichiers :

Code:
$page = getenv('REQUEST_URI');

if (eregi("ancienne_page",$page))
{
header("Status: 301 Moved Permanently");
header("Location: http://www.tonsite.com/nouvelle-page.html");
exit();
}
 
Nouveau WRInaute
Bonsoir bonsoir,
merci jblyon pour le code mais apparemment je ne l'utilise pas correctement ; je fais ceci (avant tout affichage html) :
Code:
$page = getenv('REQUEST_URI');
if (eregi($_GET['page'],$page)){
	header("Status: 301 Moved Permanently");
	header('Location: http://monsite.com/dossier/'.$_GET['page'].'.html');
	exit();
}
Et la belle erreur après un chargement assez long :
"Firefox a détecté que le serveur redirige la demande pour cette adresse d'une manière qui n'aboutira pas."

Hmm help ? :o

-----------------------------
PS pour Xou :
la seule différence que je vois c'est le tiret absent dans la "regex" ... mais je suis obligé de le mettre vu que mes pages contiennent des tirets, donc...
(si tu pensais à autre chose, dis-le moi, parce que ça fait dix min que je compare les lignes le nez collé à l'écran :D)
 
Nouveau WRInaute
Re, et de rien :wink:

La syntaxe est correcte, me semble-t-il. Testé chez moi, c'est OK.
Test la variable $_GET['page'] avec un truc du genre :

Code:
echo $_GET['page']; exit();

Dis moi si tu récupère bien la valeur de ta variable passée en URL.
Peut être un problème avec les GPC.
 
Nouveau WRInaute
j'ai ceci :
RewriteRule ^([0-9a-zA-Z-]+)\.html$ /crypto/index.php?page=$1 [L]

(qui marche donc si je l'utilise seule, sans R=301 ni redirection php)
 
Nouveau WRInaute
Bon, j'ai tout testé avec la meme règle que toi et le meme code de redirection.
J'ai testé dans différents environnements :
Debian php4
Ubuntu php5
WAMP

Ca fonctionne correctement sur les 3.

Désolé je sèche.
Si j'ai une idée lumineuse, je te tiens au jus :wink:
 
Nouveau WRInaute
bon et bien tant pis, mais merci beaucoup pour ton aide ^^
je vais tâcher de reprendre mon parcours initiatique sur le référencement, ... seul, dans l'immensité...
 
WRInaute discret
Xou a dit:
ça n'a rien à voir, et c'est assez bizarre ce que tu nous explique là, le L signifie "last" : c'est la dernière règle qu'il prendra en compte pour cette condition.

Douh ! Merci pour l'info car je pensais que le L signifiait Location, que j'opposais à R.
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut