Messages: 95

Enregistré le: 25 Avr 2006

Message le Mar Mar 03, 2015 20:30

bonsoir.

J'ai découvert un petit soucis sur mon référencement.

mon site est architecturé classiquement

example.com/index.php
example.com/page1.php
example.com/page2.php

pourtant j'ai découvert que google avait fait une drole d'indexation, créant des pages qui n'existe pas :

ndd.com/index.php/page1.php

la premiere chose c'est que j'aimerais savoir comment corriger cela pour que si un visiteur clique sur
example.com/index.php/page1.php
il aille sur ndd.com/page1.php

et la deuxieme , savoir pourquoi google fait cela et d'ou il est allé chercher ces urls et comment corriger ça ?

merci
Haut
2 Réponses
Messages: 354

Enregistré le: 2 Juin 2010

Message le Mer Mar 04, 2015 9:34

NoWayHome a écrit:
la premiere chose c'est que j'aimerais savoir comment corriger cela pour que si un visiteur clique sur
example.com/index.php/page1.php
il aille sur ndd.com/page1.php


Dans ton .htaccess, tu peux ajouter cette ligne :

Code: Tout sélectionner
redirect 301 /index.php/(.*) /$1


Je pense que ça devrait fonctionner

NoWayHome a écrit:et la deuxieme , savoir pourquoi google fait cela et d'ou il est allé chercher ces urls et comment corriger ça ?


D'une manière générale, Google ne devrait pas avoir à indexer un index.php, c'est la page d'accueil...
Donc faire :

Code: Tout sélectionner
redirect 301 /index.php /


Permettrait à google d'indexer l'accueil sans 'index.php'

Ensuite, quand tu fais tes liens, tu les écris comment ?
Haut
Messages: 95

Enregistré le: 25 Avr 2006

Message le Mer Mar 04, 2015 18:36

Bonjour

Merci pour la réponse.

Alors j'ai trouvé l'origine du problème, la cause, le symptome et la solution.

Par contre pour les liens déja indexé je regarderais pour ta méthode.
Code: Tout sélectionner
redirect 301 /index.php/(.*) /$1


Bon j'explique , ça servira peut etre à qq un jour.

- l'origine du probleme :
Le trailing-slash
Il s'agit du / qui s'ajoute ( ou pas ) à la fin d'une URL.

<your-domain-here>/<some-directory-here>/
(with trailing slash)
<your-domain-here>/<some-directory-here>
(no trailing slash)

- La cause du probleme.
Je fait de l'url rewritting pour certaines pages, histoire d'avoir

<your-domain-here>/la-page-2-produits.html
plutot que
<your-domain-here>/selection.php?produit=2

mon premier probleme c'est que ce rewritting présentait une erreur.
RewriteRule page-rewrite.html page-no-rewritte.php?id=$1 [NC]

je n'avais pas mis le $ à la fin de la page rewrite
RewriteRule page-rewrite.html$ page-no-rewritte.php?id=$1 [NC]

et pour cause ( à cause de mon "second probleme )

mon second probleme c'est que sur cd meme ndd, j'ai un wordpress et que celui ci est configuré pour que les permaliens soient de type
/%category%/%postname%/

avec trailing slash donc.

ce trailing slash etait occassionais des erreurs sur les autres pages rewrité non wordress , d'ou la désactivation du $.

- le symptome.

<your-domain-here>/<some-directory-here>/ ET <your-domain-here>/<some-directory-here>
affichais la MEME page.
sauf que l'on peut continué à browser avec <your-domain-here>/<some-directory-here>/ , en "incrementant" le chemin url avec les pages suivantes.
<your-domain-here>/index.php/page1.php/contact.php ...

il suffit alors , pour une raison que j'ignore par contre, que les robots testent le trailing slash, pour avoir une page correcte et continue le crawling en referencant des pages qui n'existe pas vraiment.

- la solution
1- passer les permaliens du blog sans le trailing slash.
/%category%/%postname%

2- Ajouter ce code au htaccess
Code: Tout sélectionner
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]


cela va permettre de retirer les / à la fin des urls lorsqu'ils sont mis

3- bien rajouter le $ dans son rewritting
RewriteRule page-rewrite.html$ page-no-rewritte.php?id=$1 [NC]

4- respecter un ordre pour le htaccess.

le code du 2.
le code de rewritting.
le rewrite de wordpress

Et .. voila.
les / sont retiré automatiquement , que cela soit sur les pages wordpress ou non.
il n'y a plus d'erreur

petite note :
hors site wordpress , si les pages sont dans un sous repertoire et que vous voulez retirer le /
le code est :
Code: Tout sélectionner
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]


Il ne me reste plus qu'a faire le redirect 301 pour les urls mal indexé.
un peu long et complexe peut etre dans mon explication mais j'espere que ça aidera qq un jour.
Haut