8721 sujets

Développement web côté serveur, CMS

Bonjour à tous,

Je poste ici mon (premier) message car je pose la touche (presque finale) à mon site et que je souhaite appliquer des règles d'url rewriting sur deux liens dynamiques.
exemple :
www.lapatateenfollie.com/patate-blondine-24.html
en lieu et place de
www.lapatateenfollie.com/index.php?p=patate&id_produit=24

Jusqu'ici tout va bien, ce ne sont pas les infos qui manquent pour arriver à ce résultat Smiley smile
RewriteRule patate-([_a-zA-Z0-9\-]+)-([0-9]+)\.html$  index.php?p=patate&id_produit=$2  [L]


En revanche, après avoir lu à peu près partout qu'il ne fallait pas utiliser l'underscore dans les URL, sous prétexte qu'il n'était pas considéré comme séparateur par google, j'aimerais connaître la solution à adopter pour remplacer les espaces blancs comme dans l'exemple ci-dessous :
www.lapatateenfollie.com/patate-vitelotte-noire-24.html

Sachant que le séparateur de mon htacess et le tiret, on se retrouve avec un souci d’interprétation dans ce cas puisque violette noire est une seule info qui apparait juste dans l'url pour optimiser le référencement.
j'utilise donc cette forme :
www.lapatateenfollie.com/patate-vitelotte_noire-24.html
qui me convient parfaitement, puisque justement vitelotte et noire n'ont pas à être considéré comme deux variables.
Seulement, je ne voudrais pas opter pour une solution de facilité au risque de pénaliser mon site en terme de référencement.
J'ai donc pensé à utiliser le slash pour séparer les variables dans la réécriture des url, comme on le croise aussi, avec le tiret pour remplacer les espaces blancs et derrière une règle de rewriting comme suit
RewriteRule patate/([-a-z]*)/([0-9]+)\.html$  index.php?p=collection&id_cat=$2  [L]

Ça ne fonctionne qu'à moitié, puisque la page désirée s'affiche bien, mais tous ses liens internes sont eux aussi réinterprétés... et donc je perds les feuilles de style, images, etc.

Peut-on m'éclairer sur les erreurs de débutants que je fais ? je sais bien que cette histoire d'espace blanc est absolument basique pour un habitué, mais en recherchant sur le forum je n'ai pas trouvé de sujets identiques (et les titres type "problème url rewriting" n'aident pas beaucoup...)

Qui plus est, on lit partout que l'underscore ne doit pas être utilisé dans les URL parce qu'il n'est pas considéré comme séparateur, mais justement, quand on désire avoir dans son url
www.lapatateenfollie.com/patate-la_patate_de_mes_reves-12.html

l'underscore me semble parfaitement adapté puisqu'on ne souhaite surtout pas que la_patate_de_mes_reves soit interprété comme 5 variables...

Merci pour toutes les lumières (et merci au passage pour tout le reste, parce qu'il est rare que je ne trouve pas l'info que je cherche sur ce site Smiley cligne )
Modifié par Brizio (07 May 2014 - 12:14)
Bonsoir,

A mon avis, le plus simple serait encore de mettre les variables facilement identifiables sans ambiguïté au début du nom. Comme ça tu peux avoir une rewrite du type ([0-9]+).*\.html

Regarde par exemple ce que fait ce forum. Tu remarqueras que les variables numériques sont systématiquement au début, et que tout est bien séparé par du tiret. AVoir tout au début te permet de te ficher complètement de ce qui suit; et donc tu peux utiliser des tirets pour remplacer les espaces en toute tranquilité sans te demander si ça peut faire foirer tes regex. D'ailleurs tu pourras faire le test, tu peux changer n'importe quoi entre le deuxième nombre et .html, le topic s'affichera quand même.

Tu as pu constater toi-même qu'utiliser le / était plutôt une mauvaise idée; tu peux par contre utiliser la virgule (choix quand même relativement courant), ou peut-être le tilde (rare mais pourquoi pas). Évite aussi le point-virgule car certains serveurs mal configurés le prennent pour un séparateur de variable php au même titre que &.

Petite note quand même avec les ponctuations dans les URL, certains webmails, forums, chat, etc. n'aiment pas trop en avoir, ça peut occasionnellement leur poser des problèmes (URL prématurément coupées et donc incorrectes notamment)
Modifié par QuentinC (07 May 2014 - 22:47)
Merci de ta réponse Smiley cligne

Je m'aperçois que dans un premier temps mes recherches sur ces histoires d'URL rewriting et de référencement était trop spécifiques, en élargissant un peu les requêtes je vois qu'il n'y a pas vraiment de réponse tranchée, on est même très proche du sujet de troll !

J'allais te répondre que justement je voulais éviter de faire simple, au risque de perdre en référencement. Parce qu'il se dit que dans les URL seules les deux premières occurrences/variables sont prises en comptes, du coup il peut sembler plus judicieux de mettre les mot clef au début de l'URL, et les ID à la fin.

Mais comme tu dis, si on regarde ce forum, le lien vers ce sujet est construit comme ceci :
topic-20-71848-1-URL-Rewriting--tiret-underscore-et-referencement.html


et bien que les mots clefs de ce sujet soient tout à la fin, ça n’empêche pas cette page de tomber en 1re page des résultats de google sur la requête :
https://www.google.fr/webhp?q=tiret+referencement#q=tiret+referencement


En peut donc en conclure que la position n'est pas si importante que ça...

J'vais tout de même garder les mot clef en début d'url, utiliser la vigule en remplacement des espaces, et le tiret en séparateur de variable.
Si ce n'est pas très joli dans les URL, au moins c'est c'est cohérent.

Bonne journée !
a écrit :
J'vais tout de même garder les mot clef en début d'url, utiliser la vigule en remplacement des espaces, et le tiret en séparateur de variable.

Si tu veux faire comme ça, je te conseille plutôt l'inverse: la virgule comme séparateur de variable et le tiret à la place des espaces. Ca fait beaucoup plus naturel et à mon avis pour le référencement c'est mieux.