Aller au contenu

Sujets conseillés

Posté (modifié)

Salut à tous !

Je commence à apprendre les subtilités de l'url Rewriting, et je viens d'en créer un pour un site en cours de développement.

Comme c'est la première fois que j'en fais, il y a des chances que mon code ne soit pas excellent.

Les pages sont de la forme :

www.monsite.com/index.html

www.monsite.com/nom_rubrique/index.html

www.monsite.com/nom_rubrique/page-X.html

www.monsite.com/nom_rubrique/ID-nom+categorie/index.html

www.monsite.com/nom_rubrique/ID-nom+categorie/page-X.html

www.monsite.com/nom_rubrique/ID-nom+categorie/ID-nom+element.html

Avec en rouge, les éléments optionnels.

Et le fichier .htaccess ressemble actuellement à ça :


Options +FollowSymlinks
RewriteEngine on
RewriteRule ^admin(/(.)*)?$ - [L]

RewriteRule ^(index.htm(l)?)?$
/home/index.php [L]

RewriteRule ^([a-z]+)(/(index.html)?)?$
/home/index.php?rubrique=$1 [L]

RewriteRule ^([a-z]+)/page-([0-9]+).html$
/home/index.php?rubrique=$1&page=$2 [L]

RewriteRule ^([a-z]+)/([0-9]+)(-([a-zA-Z0-9+]+))?(/(index.html)?)?$
/home/index.php?rubrique=$1&categorie=$2 [L]

RewriteRule ^([a-z]+)/([0-9]+)(-([a-zA-Z0-9+]+))?/page-([0-9]+)\.html$
/home/index.php?rubrique=$1&categorie=$2&page=$5 [L]

RewriteRule ^([a-z]+)(/([0-9]+)-([a-zA-Z0-9+]+))?(/([0-9]+)(-([a-zA-Z0-9+]+))?\.html)$
/home/index.php?rubrique=$1&categorie=$3&id=$6 [L]

Je me demandais surtout si, comme les urls étaient susceptibles de changer pour la même page (notamment en modifiant le nom d'un élément ou d'une catégorie), s'il y avait un risque du côté référencement par les moteurs de recherche.

Par exemple, si jamais je renseigne dans la bdd, le nom de catégorie "cattegorie", que google vient indexer la page en question, et que je décide de corriger la faute d'othographe (en renommant la page en "categorie").

J'aurai donc deux pages indexées (www.monsite.com/1-cattegorie et www.monsite.com/1-categorie), qui aboutiront au final au même endroit.

Y a t'il risque de pénalisation ?

De même, comme j'autorise d'arriver sur une catégorie (par exemple), en tapant

www.monsite.com/rubrique/ID-nom+categorie, ou

www.monsite.com/rubrique/ID-nom+categorie/, ou

www.monsite.com/rubrique/ID-nom+categorie/index.html,

cela peut-il avoir une incidence sur le référencement ?

Je précise par ailleurs, que j'utilise une fonction pour générer mes liens, et qu'ils sont donc tous sur la même forme (soit la dernière citée).

Je ne gère les autres cas (sans nommer le fichier index, ou sans le slash de fin de répertoire), que dans un souci d'éviter de générer des erreurs à tout va.

Et pour finir mon gros post de la matinée, je me posais une question :

je gérais actuellement les pages d'erreur en PHP, sans générer de véritable erreur (juste une inclusion d'une page appelée 404.php).

Je me demandais, au vu des capacités du htaccess, s'il ne valait pas mieux générer une véritable erreur en PHP (avec une en-tête 404), et laisser le htaccess afficher la page adéquate. Qu'en pensez vous ?

Modifié par captain_torche
Posté

Salut,

Je te réponds pour le 404... et prendrai le tmps de relire ton post plus tard ;)

Il faut mettre une page spécifique pour les erreurs 404 et surtout renvoyer la bonne entête !

Donc, une ligne telle que :

ErrorDocument 404 /ta_page_404.html

fera l'affaire.

Vérifie ensuite sur l'analyseur d'entête du Hub pour être certain que le code retourné est bien 404.

Dan

Posté

C'est bien ce que je me disais pour le 404.

Bon, quelques petites modifs à faire dans mon code ce soir, mais rien de bien méchant (Quand tu auras pris le temps de tout relire - courage -, tu constateras que tout est centralisé sur un seul fichier, donc peu de modifs en vue).

Merci, en tout cas.

Et merci d'avance pour le reste !

Posté
Je suis en train de penser à un truc :

Peut-être que j'ai placé le sujet dans le mauvais forum.

N'aurait-il pas sa place dans le forum référencement ?

S'il n'avait pas été dans le bon forum Dan l'aurait déplacé ;)

Et tu as plus de chance qu'il revienne sur ton post dans ce forum que dans le forum référencement :D

Posté

[HS]Ahhhh à quand les forums à base de tags en plus de catégories ;)

Pardon pour cette digression...mais c'est quelque chose que je n'ai jamais vu et à quoi je viens de penser.[/HS]

Sinon pour le problème de rewrite, une URI (les URL sont des URI) doit permettre d'identifier une ressource de manière permanente, même si la ressource est déplacée ou supprimée.

Donc si tu viens à renommer ta catégorie, avec le schéma d'URL que tu as choisi son URL va changer, l'ancienne ressource (avec le nom de catégorie différent) devrait être redirigé de manière permanente (301) vers la nouvelle catégorie...

Cela c'est la théorie... en pratique tu n'identifies pas ta catégorie par son nom dans la logique de ton programme, mais par la valeur de son champ "id" et donc techniquement que ce soit marqué "/20-technologie/54-mod+rewrite.html" ou que ce soit marqué "/20-mecanique/54-cle+anglaise.html" n'a pas d'importance pour ton utilisateur en fait (mis à part un côté mnémotechnique, mais tant que tu utilises des "id" l'utilisateur "lambda" ne mémorisera tes URL, et dans c'est logique d'utiliser des "id" à mon avis) mais cela en a au niveau du référencement...

Si tu veux faire cela de manière propre vis à vis des moteurs lorsqu'une catégorie sera renommée tu reprendras son schéma et tu créera une redirection permanante qui sera placée avant des règles de réécriture. Par exemple :

RedirectPermanent /20-technologie/54-mod+rewrite.html http://domaine.com/20-mecanique/54-cle+anglaise.html

Ou une RewriteRule avec le flag [R=301], mais RedirectPermanant n'utilise pas le mod_rewrite ;)

Cela n'est pas vraiement une solution viable, car à long terme et si tes catégories sont souvent modifiées et/ou modifiées par des rédacteurs externes à l'adrministration de ton site à ce niveau (.htaccess), il sera impossible de maintenir un fichier cohérent... Je tenais tout de même à t'indiquer que cette possibilité existe !

Dans ce cas, tu as meilleur temps de réaliser ces redirection depuis PHP. Tu récupères le nom de la catégorie dans un paramètre GET et vérifier que l'id correspond bien à ce paramètre, si ce n'est pas le cas tu effectues une redirection permanente avec cette fonction par exemple :

  function redirect301($url) {
   header("HTTP/1.1 301 Moved Permanently");
   header("Location: ".$url);
   header("Connection: close");
 }

Attention, cette fonction doit être appelée avant que toutes autres données ne soit envoyées au navigateur, sinon la redirection ne sera pas effectuée et un message d'erreur d'indiquant que les en-têtes ont déjà été envoyées (headers already sent) sera affiché.

Posté

Ben, techniquement, les noms de catégorie et autres (hors fautes d'orthographe), ne devraient pas être soumises à changement.

Il y a une seule personne pour l'administration et une fois les noms de catégories et d'éléments choisis, il ne devrait pas y avoir de modification.

Je voulais juste savoir si, dans les cas marginaux (normalement), de correction de faute d'orthographe, il y avait un risque de pénalisation par les moteurs de recherche (deux urls indexées aboutissant au même contenu).

Posté (modifié)

C'est ce à quoi j'ai répondu... et donc je répète, dans le cas d'une petite quantité modifications, cela ne sert à rien de programmer un système de redirection en PHP... une simple directive RedirectPermanent <local_path> <target_url> dans un fichier .htaccess devrait suffir... Cette méthode correspond à ton problème

Si les modifications de nom de catégories venait à se multiplier, là, une redirection en PHP en fonction de l'id , du nom actuel de la catégorie et du nom de la catégorie se trouvant dans l'URL serait justifiée...question de viabilité, car maintenir un fichier .htaccess dans ce cas serait très difficile... Celle-ci correspond au même problème, mais dans le cas de modification férquentes des noms de catégories

P.S. : Je me suis jamais fait blacklisté pour une ou deux pages de duplicate content...mais à mon avis on ne peut pas établir une règle uniquement sur mon expérience.

Modifié par TheRec

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...