8768 sujets

Développement web côté serveur, CMS

Bonjour à tous
j'ai une eboutique (développement perso) et pour des raison de SEO, les urls sont réécrites de la sorte :

RewriteRule ^fr/famille/sousfamille/soussousfamille/(.*)-(.*).html$ index.php?lang=fr&page=boutique&id_categorieA=2&id_categorieB=129&id_categorieC=334&id_prix=$2 [QSA]

Le souci est que j'ai beaucoup de menu et sous menus. Et que le SEO m'oblige à ne pas passer les ID des familles et sous familles dans l'url (juste le id_prix).
Ceci multiplié par 6 langues, je me retrouve avec un htaccess très (trop ?) lourd (plus de 10 000 lignes...).

Je ne vois pas comment faire à part réécrire chaque url dans le htaccess pour retrouver les ID des familles/sous familles.
Merci pour vos lumières !!!

Cyril
Salut Smiley smile

En fait tu as mal compris la logique du rewriting et tu as fait l'erreur de tous les débutants Smiley decu

RewriteRule ^fr/famille/sousfamille/soussousfamille/(.*)-(.*).html$ index.php?lang=fr&page=boutique&id_categorieA=2&id_categorieB=129&id_categorieC=334&id_prix=$2 [QSA]

aurais du être écrit de la sorte (je fais de mémoire je teste pas)

RewriteRule ^([a-z]{2})/([a-z]*)/([a-z]*)/([a-z]*)/(.*)-(.*).html$ index.php?lang=$1&page=boutique&id_categorieA=$2&id_categorieB=$3&id_categorieC=$4&id_prix=$5 [QSA]

et voilà UNE seule ligne pour toutes les langues et toutes les pages.
j'ai considéré que tes familles ne contenaient que des lettres, mais c'est du REGEXP donc tu adaptes Smiley cligne
Ok, je vais tester mais je ne voitr pas comment en ne passant pas de numéro d'id dans la réécriture, il peut me retrouver mes familles.

En fait mes urls réécrites sont comme ça :

fr/manteau/femme/jean/manteau-pour-l-hiver-1234.html
En faisant ta réécriture, comment savoir que manteau va bien me lancer l'id du manteau ?

Car $2 va retourner "manteau" non ?
Modérateur
cyrilj a écrit :

En faisant ta réécriture, comment savoir que manteau va bien me lancer l'id du manteau ?

Plutôt que de le faire en dur dant ton htaccess (manteau devient 3 par exemple), tu peux le faire proprement dans ton code. Tu peux même les récupérer depuis ta base de donnée ce qui simplifiera l'ajout de familles/catégories.

Par ailleurs, fr/manteau/femme/jean/manteau-pour-l-hiver-1234.html devrait être écrit par exemple:

fr/manteau-pour-l-hiver ou fr/produit/manteau-pour-l-hiver

étant donné que les familles et sous-familles et autres sont déduites du produit, et là tu auras de belles URL SEO-friendly
En complément de cette réécriture bien plus SEO Smiley cligne

fr/produit/manteau-pour-l-hiver <- rien ne t'empèche d'écrire ceci

fr/produit/manteau-pour-l-hiver-2-9-182.html

où 2 = categorieA
9 = categorieB etc etc etc
les numéros ça reste friendly SEO Smiley cligne et toi tu te repère dans tes rubriques et sous rubriques Smiley smile

en revanche cela t'oblige à réécrire toutes tes url, mais je suis sur qu'avec le nombre qu'il y en a c'est une fonction php qui la crée l'url Smiley smile
Ouaip, c'est bien ce qui me semblait. Sauf que la boite qui gère le SEO ne veut pas de nombres (à part celui de l'article) sans les URLs......

Et ils veulent qu'il y ait le fils d'ariane dedans, donc un htacces volumineux.
Vos solutions sont bonnes, mais non adaptables à ce qu'on m'impose.

Et donc apparemment pas d'autres solutions...
Merci pour votre perspicacité !
Modérateur
Rien ne t'empêche de rajouter le fil d'Ariane. Pour les numéros ils ne servent à pas grand chose et gênent en effet la lecture.
J e ne vois pas pourquoi ce n'est pas adaptable

si tes noms de catégories sont dans une bdd avec une liaison sur l'id

il te suffit d'aller les chercher avant d'afficher la page...

Je vois pas en quoi c'est plus compliqué que d'écrire 10000 lignes d'htaccess !!
Bonjour
ouaip et bien c'est là que mon cerveau coince Smiley ohwell
Je ne vois toujours pas comment récupérer mes id si je fais, sans aller jusqu'à la fiche produit par exemple :

si mon url est de ce type : fr/manteau-cuir-veritable/ete/
Alors que dans ma base j'ai :
#idA 9 --> manteau cuir véritable
#idB 11 --> été
Comment ressortir idA et idB ? Car je ne peux pas matcher manteau-cuir-veritable avec manteau cuir véritable.... Smiley ohwell
C'est là que je bloque et que je ne comprends pas... c'est dingue !
Merci.
Cyril
Alors c'est simple Smiley smile
ou presque Smiley smile
Ca demande quelques modifs dans ta bdd Smiley cligne mais ça va te faciliter la vie Smiley smile

il te suffit d'ajouter un champs pour tes catégories Smiley smile qui va contenir la version postslug le rewrite quoi Smiley smile comme ça tu pourras facilement rechercher dessus avec des correspondances exactes Smiley smile

ensuite vu que tu as un rewrite, la recherche va se faire à l'entrée de ta page "boutique" avant la requète finale d'affichage du produit. Ca prendra pas plus de 10 ms et ça te facilite toute ta réécriture Smiley smile
Meilleure solution
Vous êtes topissimes !!!! Parfois on ne trouve pas une solution qui est finalement assez simple et logique. Je vous remercie pour votre grande perspicacité et patience.
Bonne soirée.

Cyril
Ravi de t'avoir aidé Smiley cligne

Si tu as résolu le problème n'oublie pas de marquer le sujet en résolu Smiley cligne

Bonne soirée Smiley lol