IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

url rewriting (mettre du texte a la place des num d'id)


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 187
    Points : 50
    Points
    50
    Par défaut url rewriting (mettre du texte a la place des num d'id)
    Bonjour!

    voila, j'ai suivi le tuto :
    http://www.webrankinfo.com/dossiers/...-url-rewriting
    donc je pense avoir compruis les bases de de l'url rewriting
    ou comment récrire une adresse de ce type :
    article.php?id=12&page=2&rubrique=5

    en comme cela (plus propre) :
    article-12-2-5.html

    mais pas comment mettre du texte a la place des muméro, genre :
    vaisselle-assiettes.html

    mais de manière dynamique, sachant qu'un numéro devra correspondre au nom de la rubrique ou au nom de l'objet

    merci

  2. #2
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    Il peu avoir plusieurs façon d'y parvenir.
    Je vais en évoquer une qui me parais la plus simple.

    Tu dois avoir une Bdd contenant les rubriques, dont un champ genre "rubrique_id".
    Je suppose aussi que tu doit avoir une partie "admin" qui sert à créer/mettre à jours les rubriques.

    Il suffit de créer un nouveau champ "url_rewrite", et dans la partie admin, lors de la création d'une nouvelle rubrique, saisir le nom qui sera utilisé dans l'URL.

    Après ça, dans la partie publique où sont récupérer la ou les rubriques pour les afficher, ou plus particulièrement quand on va créer le ou les liens, et bien on récupèrera le champ "url_rewrite" et l'exploiter (au lieu de l'id).

    Même principe pour les pages, articles, et autre où tu souhaites faire de la réécriture.


    Petite remarque au passage.
    Si on ne met pas les IDs dans l'URL, il faudra être certain que le nom soit unique, sinon il sera impossible de récupérer la bonne rubrique (ou article, page, etc ...).
    Mettre une contrainte d'unicité sur le champ "url_rewrite" serait utile dans ce cas là (plus de doublon possible).


    T'as 1ère suggestion évite ce problème d'unicité car il se basera quand même sur les IDs pour rechercher l'article/page/rubrique associé.
    -> article-12-2-5.html

    Mais rien empêche de faire ceci :
    vaisselle-assiettes-12-2-5.html
    Là aussi plus de problème d'unicité, et la partie "vaisselle-assiettes" n'a aucune utilité techniquement parlant (tout juste utile pour le référencement).

    mais pas comment mettre du texte a la place des muméro, genre :
    vaisselle-assiettes.html
    Attention, ici il manque des infos, comme la page, la rubrique.
    S'il te les faut, il faudra prévoir quelque chose comme :
    -> vaisselle-assiettes/nom-de-la-rubrique/2.html
    Ou -> vaisselle-assiettes/nom-de-la-rubrique/page-2.html


    Prend le temps de parcourir le forum Apache, il est très souvent question de réécriture.
    Il vaut mieux ne pas se tromper dans la manière de générer les liens, ça peut très vite être bloquant (ou compliqué).

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 187
    Points : 50
    Points
    50
    Par défaut
    super merci pour la réponse qui m'aide beaucoup

    j'ai donc fait comme tu m'a dis avec un champ url rewriting , dans ma bdd , lier a un champ de mon admin mon admin

    mais je n'ai pas tout compris,

    par ex, si je decide de nommer mes url de cette facon :

    url d'une categorie :
    ---------------------
    veritable url : http://monsite.fr/liste-produit.php?idCategorie=5
    url rewriting : http://monsite.fr/lecteur-cassette-5.html

    ou url d'un article de cette categorie :
    ----------------------------------------
    veritable url : http://monsite.fr/fiche-produit.php?idProduits=1250
    url rewriting : http://monsite.fr/philips-tech-plus-gris-1250.html

    ma méthode est 'elle bonne?
    que je remplisse manuellement (via l'interface de mon admin) le champ url_rewriting de ma bdd
    ou automatiquement (nom du produits avec les mots separé par des tirets) le champ url_rewriting de ma bdd

    une fois le champ url_rewriting rempli (de cette maniere : philips-tech-plus-gris)

    je peux maintenant former mes liens de cette facon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo='<a href="http://monsite.fr/'.$url_rewriting.'-'.$idProduits.'.html">liens vers l\'article</a>';?>
    la methode est 'elle bonne?
    est-ce utile de pouvoir les entrer manuellement (laisser le choix a l'administrateur de choisir url), dans quels cas cela peut etre utile?

    encore merci

  4. #4
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    la methode est 'elle bonne?
    La méthode me semble correcte.
    Mais parmi d'autres tout autant correcte.

    Pour exemple, de mon coté je ne mets pas d'extension .html, je trouve cela inutile.
    Une URL comme ceci fonctionne tout aussi bien : -http://monsite.fr/philips-tech-plus-gris-1250
    (observe ce forum, il n'y a pas non plus de .html ... pour exemple)

    Selon comment les règles sont faites dans ton .htaccess (donc ça dépend), si tu crées une page 100% statique (100% html, donc sans code Php), ça peut être un handicape.

    est-ce utile de pouvoir les entrer manuellement (laisser le choix a l'administrateur de choisir url), dans quels cas cela peut etre utile?
    Je ne saisie pas ce que tu sous-entends ???
    La méthode que je t'ai suggéré est la plus simple. Grosso modo, on limite le coté hasardeux, ou autre complication.

    On peu par exemple ne pas créer de champ "rewrite_url", mais créer le nom automatiquement en se basant sur un titre, un nom (titre de catégorie, nom de l'article).
    L'inconvénient, c'est qu'il faut faire des routines de codes pour épurer ces titres/noms pour remplacer les espaces par des tirais, remplacer les caractères spéciaux, et autre trucs pouvant provoquer des erreurs.

    On peu faire aussi un compromis entre ces 2 là, comme conserver le champ "rewrite_url", mais de le mettre à jour automatiquement (update/insert) en se basant sur un titre, un nom, donc sans devoir le saisir.

    Ce qui est certain, c'est qu'il faut se baser sur quelque chose pour générer un nom, un titre, etc ... dans l'URL, et surtout qu'il soit possible de récupérer les infos une fois l'URL réécrite (paramètres/valeurs en GET).

    En somme, il y a toujours moyen d'automatiser plus ou moins les choses, si c'est cela que tu veux dire.


    Pour info, il y a d'autres manières de faire, ça dépend toujours ce que tu recherches, mais surtout comment l'ensemble de ton projet est structuré, et comment il évoluera dans le temps aussi.

    Quelques exemples
    C'est de rajouter le nom de la page dans l'URL :
    Pour une page contact : -http://monsite.fr/contact.html
    ou -http://monsite.fr/contact

    Pour une page des catégories : -http://monsite.fr/categories.html
    ou -http://monsite.fr/categories

    Pour une page d'une catégorie :
    -http://monsite.fr/categorie-10.html
    ou -http://monsite.fr/categorie-10
    ou -http://monsite.fr/categorie/10
    ou -http://monsite.fr/categorie/nom-de-la-categorie-10
    ou -http://monsite.fr/categorie/nom-de-la-categorie/10

    Pour un article :
    ou -http://monsite.fr/article-15.html
    ou -http://monsite.fr/article-15
    ou -http://monsite.fr/article/15.html
    ou -http://monsite.fr/article/nom-de-cet-article-15
    ou -http://monsite.fr/article/nom-de-cet-article/15

    ... etc ...

    Ca peu être utile (voir obligatoire selon le cas) de savoir de quelle page on a affaire.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 187
    Points : 50
    Points
    50
    Par défaut
    encore merci ca m'éclair beaucoup...

    1) ce que je veux dire dans :
    est-ce utile de pouvoir les entrer manuellement (laisser le choix a l'administrateur de choisir url), dans quels cas cela peut etre utile?
    c'est, est-ce utile de pouvoir les entrer manuellement via l'admin "l'url rewrite" genre qu'il tape le nom qu'il veut voir apparaitre dans l'url, genre pour une catégorie , il va taper "vaisselle"
    et bien sur sera automatiquement ajouter au début : http://monsite.fr/
    et a la fin l'id de la catégorie : -9
    ce qui donnera comme url : http://monsite.fr/vaisselle-9

    ou ceci n'a pas d'utilité, autant se baser sur le nom de la catégorie
    et de créer automatiquement l'url rewrite grâce au nom auquel j'ajouterai automatiquement des tirets si celui ci est composé?

    2) dans mon fichier .htaccess,
    une nouvelle ligne de ce type :
    RewriteRule ^objets-communication\.php$ http://www.monsite.fr/liste-produit....orieProduits=9 [L]
    dois être écrite (grace a php) pour chaque catégories et chaques articles, donc plusieurs centaines voir milliers ou il y a t'il une autre astuce?

    3) sinon j'ai un pb
    quand je tape dans l'url
    http://www.monsite.fr/objets-communication.php
    ca me renvois bien vers la bonne page :
    http://www.monsite.fr/liste-produit....orieProduits=9
    mais ca m'affiche l'url "non rewrite" a savoir
    http://www.monsite.fr/liste-produit....orieProduits=9
    bien sur je voudrais que ca me laisse l'url rewrite :
    http://www.monsite.fr/objets-communication.php

    voici mon code ".htaccess":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Options +FollowSymlinks
    RewriteEngine on
     
    RewriteRule ^objets-communication\.php$   http://www.monsite.fr/liste-produit.php?idCategorieProduits=9 [L]
    4) que penses tu du systeme de rewriting de ce celebre site de pompes
    catégorie :
    sous catégorie :
    produit :
    il n'y a plus de tace des catégories/souscategories/produits
    mais selement le nom de la catégorie en question, ou du produit

    encore merci beaucoup

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 187
    Points : 50
    Points
    50
    Par défaut
    encore merci ca m'éclair beaucoup...

    1) ce que je veux dire dans :
    est-ce utile de pouvoir les entrer manuellement (laisser le choix a l'administrateur de choisir url), dans quels cas cela peut etre utile?
    c'est, est-ce utile de pouvoir les entrer manuellement via l'admin "l'url rewrite" genre qu'il tape le nom qu'il veut voir apparaitre dans l'url, genre pour une catégorie , il va taper "vaisselle"
    et bien sur sera automatiquement ajouter au début : http://monsite.fr/
    et a la fin l'id de la catégorie : -9
    ce qui donnera comme url : http://monsite.fr/vaisselle-9

    ou ceci n'a pas d'utilité, autant se baser sur le nom de la catégorie
    et de créer automatiquement l'url rewrite grâce au nom auquel j'ajouterai automatiquement des tirets si celui ci est composé?

    2) dans mon fichier .htaccess,
    une nouvelle ligne de ce type :
    RewriteRule ^objets-communication\.php$ http://www.monsite.fr/liste-produit....orieProduits=9 [L]
    dois être écrite (grace a php) pour chaque catégories et chaques articles, au moment de l'enregistrement de clui ci dans la bdd
    ce qui fera donc plusieurs centaines voir des milliers ou il y a t'il une autre astuce?

    3) sinon j'ai un pb
    quand je tape dans l'url
    http://www.monsite.fr/objets-communication.php
    ca me renvois bien vers la bonne page :
    http://www.monsite.fr/liste-produit....orieProduits=9
    mais ca m'affiche l'url "non rewrite" a savoir
    http://www.monsite.fr/liste-produit....orieProduits=9
    bien sur je voudrais que ca me laisse l'url rewrite :
    http://www.monsite.fr/objets-communication.php

    voici mon code ".htaccess":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Options +FollowSymlinks
    RewriteEngine on
     
    RewriteRule ^objets-communication\.php$   http://www.monsite.fr/liste-produit.php?idCategorieProduits=9 [L]
    4) que penses tu du systeme de rewriting de ce celebre site de pompes

    catégorie :

    sous catégorie :

    produit :


    il n'y a plus de tace des catégories/souscategories/produits
    mais selement le nom de la catégorie en question, ou du produit

    encore merci beaucoup

  7. #7
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Je ne sais pas ce que tu voulais faire dans ce dernier post

    Te focalise pas sur ce genre de sites.
    C'est bien de vouloir faire comme les "grands", mais ne perdons pas de vu qu'on ne dispose pas forcément les même moyens (matériel, humain, connaissance, financiers, etc ...).

    Un lien juste pour information :
    Gestion d'arbres par représentation intervallaire
    Ce tutoriel est là pour expliquer comment structurer une Bdd avec une représentation intervallaire, qui est efficace pour un grand volume de données et une arborescence assez profonde.
    Au début on présente l'auto-jointure qui est autre manière beaucoup plus courante.

    Là où je veux en venir, c'est que le choix de structurer son projet, et indirectement la réécriture ce fait sur l'ensemble de son projet, entre autre la manière dont sont structurés ces données dans la Bdd.

    On ne sait rien à ce niveau pour ce site, ils utilisent peut être l'intervallaire pour structurer leur données, se qui peu leur permettre de mettre en place une réécriture particulière.
    Vouloir faire pareil peut être contre-productif, comme déboucher sur une flopée de requête SQL pour obtenir 1 info.

    De plus, il est fort probable que ces projets coté Php soient énormément Objet (POO), et qu'il adoptent aussi une structure MVC avec dispatcher, routage, etc ... voir autre.

    De mon coté ce sont ces principes là que j'adhère depuis quelques temps déjà, car cela offre plus de malléabilités à pleins de niveaux (il n'y a que la réécriture).
    Grosso modo, tout transite par un fichier index.php à par les js, css, etc ....
    Coté .htaccess :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Options +FollowSymLinks
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule !\.(js|css|jpg|jpeg|gif|png|ico|pdf|xml)$ index.php [PT]
    Un membre à créer une contribution qui ressemble pas mal à ce principe là :
    Router pour pattern MVC [grunk]
    Un FrameWork qui m'a été une grande source d'inspiration : Kohana

    Il te faut te focaliser sur t'as structure, ou alors de baser sur des projets s'approchant le plus de la tienne, sinon tu risques de faire de mauvais choix.


    Question comme ça à tout hasard.
    Pourquoi ne pas adopter un FrameWork, qui eux offrent tous de faire de la réécriture (entre autre) ? (si cela n'est pas le cas bien sûr).

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 187
    Points : 50
    Points
    50
    Par défaut
    ok super je regarde ces tutos de suite

    sinon désolé pour le précèdent message
    il y avait un pb de balise "quote" qui englobait tout le message
    voila je la'ai remis au propre,
    ce sont vraiment les 3 premières questions qui me bloquent et surtout la 2 et 3
    si tu a s une réponse même brève, je te remercie encore

  9. #9
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Concernant le point 2 et 3, ça veut dire que tout n'est pas encore clair.
    Troquer une page Php par une autre Php n'a pas vraiment d’intérêt.
    Une URL comme ceci suffirait : -http://www.monsite.fr/objets-communication

    Après, vient l'autre problème que j'avais évoqué, c'est de quelle page on a affaire ?
    Une catégorie ?
    Une liste de catégories ?
    Un produit ?
    Un article ?
    etc ...
    Sur quoi va tu te baser selon ton exemple pour savoir que ce sera une liste de produits plutôt qu'un produit ?


    Le problème, c'est qu'il n'y a pas qu'une seule façon de faire, l'exemple du site que tu as mis en est la preuve, de même que ce forum lui aussi adopte leur façon aussi de faire, etc ....
    C'est normal, car pour savoir quoi faire il faut au moins avoir une bonne vue sur l'ensemble de ton projet.

    Comme ça au feeling, et surtout par précaution, je ferais quelque chose comme :
    -http://www.monsite.fr/categorie/objets-communication
    Mais on faire comme ceci aussi : -http://www.monsite.fr/categorie/objets-communication/9
    ou encore : -http://www.monsite.fr/categorie/objets-communication-9
    Je peux en mettre d'autres, et ils se valent tous à mon sens.
    Ici, ça part du principe qu'il y aura une page "categorie", et dans celle-ci une requête SQL pour rechercher les produits de cette catégorie "objets-communication" (ou 9 selon le cas).
    C'est à toi de voir.


    Avant de mettre la charrue avant les boeufs, c'est à dire créer le .htaccess, il te faut déjà être certain du comment seront trouvés les pages, infos, critères, etc ... s'il y en a, et ça sur l'ensemble de ton projet.
    Il te faut adopter un concept en somme.


    Pour les règles dans le .htaccess, post plutôt dans le forum Apache, il y a des membres bien plus qualifiés que moi (les REGEX ça n'a jamais été ma tasse de thé ).

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 187
    Points : 50
    Points
    50
    Par défaut
    en effet j'ai bien compris, ce que tu essais de me dire
    je dois determiner mon url rewriting, en fonction de des criteres que j'estime pertinents comme par ex : la recherche du visiteur
    et donc des mots clés qu'il est senser taper dans les moteur de recherche pour touver mon produit...

    sinon j'ai trouvé la réponse a ma question 3)
    en effet il fallait enlever http://www.monsite.fr/ dans la deuxième partie sinon ça fesait une redirection.

    il me reste plus que ma question 2)
    sachant que mon site contient plusieurs catégories et articles
    mon fichier .htaccess, dois t'il contenir une nouvelle ligne de ce type :
    RewriteRule ^objets-communication\.php$ liste-produit....orieProduits=9 [L]
    pour chacune des pages de ces catégories et articles
    ce qui m'en fera donc plusieurs centaines voir des milliers ou il y a t'il une autre astuce?

    mencore merci pour ton aide

  11. #11
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Il ne faut surtout pas mettre la valeur de l'ID "en dur" dans le .htaccess, on perd totalement tout le coté dynamique.
    Il faut que ce soit 100% dynamique justement.

    D'autres exemples de règles, de façon de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^([0-9]+)\-[a-zA-Z0-9-]*(/[a-zA-Z0-9-]*)+ /categorie.php?cat_id=$1 [QSA,L]
    L'URL sera :
    -http://www.domaine.com/12-haute
    et l'URL rewritée sera :
    -http://www.domaine.com/categorie.php?cat_id=12

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^([0-9]+)\-([0-9]+)/[_a-zA-Z0-9-]*\.html$ /categorie.php?cat1_id=$1&cat2_id=$2 [QSA,L]
    L'URL sera :
    -http://www.domaine.com/25-12/basket-haute.html
    et l'URL rewritée sera :
    -http://www.domaine.com/categorie.php?cat1_id=25&cat2_id=12


    Il y a donc des REGEX qui permet de créer en quelque sorte des groupes (ou ensembles) de données qui débouchent chacune sur des variable.


    Ici, c'est aussi pour démontrer qu'on peu prévoir 2 façons différentes de traiter la même chose.
    - Soit on prévoit de renvoyer uniquement la sous-catégorie, qui après suppose de rechercher (requête SQL) la catégorie parente.
    - Soit on prévoit de renvoyer les 2, la catégorie parente et la sous-catégorie.


    On peu aussi avoir la même réflexion pour les produits.
    Renseigne t-on seulement le produit, ou est il intéressant de rajouter la catégorie auquel il appartient, voir les sous-catégories aussi ?
    Tout ça c'est à toi de voir.
    Je peux juste dire que théoriquement, il vaut mieux éviter d'avoir à traiter trop de données car un internaute aura toujours la possibilité de modifier une URL, donc d'obtenir des infos contradictoires.


    Vient après un autre aspect, les critères, c'est à dire d'obtenir des infos différentes d'une même page selon des critères différents.
    Prenons cette page catégorie qui listerait des produits.
    Le 1er critère qu'on a vu c'est le nom où l'ID d'une catégorie.
    Mais admettons qu'on prévoit de lister des produits selon une plage de prix, de 20€ à 80€ par exemple.
    Mais pourquoi pas aussi selon les marques de produits.
    Voir tous : Une catégorie, une plage de prix et une marque.
    Et d'autres critères encore.
    Est-il envisager d'utiliser de la réécriture sur 1 critère ? sur l'ensemble des critères ?
    Faut il le faire sur la même page catégorie ou sur une autre ?


    Puis un tout autre domaine n'a pas été évoqué, mais il me semble que tu dois aussi avoir un espace d'admin pour gérer tout ça (un espace privé normalement).
    Cet espace est il dans le même domaine que celui publique ou alors totalement à part ?
    Faut il de la réécriture dans cet espace aussi ?
    En somme, si c'est le cas faudra éviter qu'il y ait conflit entre les 2 espaces.


    Vois tu, les cas et questions s'additionnent, et c'est rare que ça s'arrête à 1, 2, ou 3 pages, en général c'est un ensemble.
    C'est pour ça que je n'ai pas de recette miracle pour te dire comment mettre en place une réécriture tellement il y a de cas et besoins différents.

    Ce n'est pas pour t'effrayer cependant, mais juste pour dire qu'il faut au moins bien déterminer les pages qui réclameront de la réécriture (peut être toutes d'ailleurs), et sur quoi s'appuyer pour obtenir le résultat voulu.

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 187
    Points : 50
    Points
    50
    Par défaut
    Citation Envoyé par RunCodePhp Voir le message

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^([0-9]+)\-([0-9]+)/[_a-zA-Z0-9-]*\.html$ /categorie.php?cat1_id=$1&cat2_id=$2 [QSA,L]
    L'URL sera :
    -http://www.domaine.com/25-12/basket-haute.html
    et l'URL rewritée sera :
    -http://www.domaine.com/categorie.php?cat1_id=25&cat2_id=12


    Il y a donc des REGEX qui permet de créer en quelque sorte des groupes (ou ensembles) de données qui débouchent chacune sur des variable.
    là on touche à l'intitulé de mon poste en effet, c'est ca que je, ne comprend pas c'est comment la regex peux me trouver que cat1_id=25&cat2_id=12, correspond a basket-haute, (pour reprendre ton exemple) ou encore le nom d'un produit???

    ou est-ce marqué?

    merci

  13. #13
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    ne comprend pas c'est comment la regex peux me trouver que cat1_id=25&cat2_id=12, correspond a basket-haute
    Le principe de base (le BABA) est très simple.

    Au départ on défini une façon d'écrire une URL (pour la catégorie par exemple), et on s'y tient.
    Donc on va générer les URLs selon cette règle : (dans les balises <a>)
    -http://www.domaine.com/25-12/basket-haute.html
    Ici, les données du code Html viennent de la Bdd lorsqu'on liste par exemple les catégories dans un menu.
    C'est le point de départ de la réécriture.

    Ensuite, on va créer dans le .htaccess le mécanisme inverse, c'est à dire que Apache (car cela est du ressort d'Apache) va analyser chaque requête HTTP entrante, et si une URL correspond à une des règles, l'opération va se faire.
    C'est à dire dans cet exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^([0-9]+)\-([0-9]+)/[_a-zA-Z0-9-]*\.html$ /categorie.php?cat1_id=$1&cat2_id=$2 [QSA,L]
    Ici on a un premier groupe : ([0-9]+) -> une valeur numérique
    Puis un 2ème groupe après le 1er - : ([0-9]+) -> une valeur numérique
    Ca va rechercher dans l'URL s'il y a une valeur numérique + un tirait + une 2ème valeur numérique + 1 slash + 1 chaine + .html à la fin.
    C'est cette expression très exactement qui sera recherché.

    Si cette expression est correcte, alors ça va alors récupérer la valeur du 1er groupe et celle du 2ème groupe pour les placer respectivement dans $1 et $2, et c'est la 2ème URL qui sera renvoyer à Php (mais cette URL on ne la visualisera pas, c'est totalement transparent, d'où le terme de réécriture).

    Cependant, tout cela est totalement lié au REGEX, propre aux expressions régulières.
    Il te faut te familiariser ne serait-ce qu'un peu aux expressions régulières, sinon tu vas avoir du mal à comprendre ce mécanisme.


    A savoir que cette URL ci-dessous on ne l'aura plus (plus visible sous cette forme) :
    -http://www.domaine.com/categorie.php?cat1_id=25&cat2_id=12
    Disons que le but c'est justement de ne plus avoir ou générer ce genre d'URLs.
    On va dire que c'est un repère, que c'est l'ancienne URL, ou l'originale si on peu dire.

    Au bout on va obtenir dans la tableau $_GET ceci :
    $_GET['cat1_id'] -> valeur 25
    $_GET['cat2_id'] -> valeur 12
    Et ce sera ça qu'on exploitera coté Php, tout comme l'URL original, et c'est ça qui est recherché aussi.
    Du coup, il suffit de faire une requête SQL pour récupérer tout ce qui concerne la ou les catégories, et les produits associés par exemple.
    Pour ce qui est de : basket-haute, c'est du décors, tout juste pour faire jolie.
    Dans cet exemple le principe est de se baser sur 2 identifiants (c'est théoriquement plus fiable).
    Mais c'est pour exemple, rien n'empêche de se baser sur uniquement des noms.


    Vois tu mieux comment les choses se déroulent ?

Discussions similaires

  1. [URL rewriting] Mettre le domaine en paramètre
    Par djynwk dans le forum Apache
    Réponses: 7
    Dernier message: 14/03/2009, 17h41
  2. Réponses: 1
    Dernier message: 09/03/2008, 23h19
  3. Réponses: 2
    Dernier message: 28/02/2008, 16h03
  4. Réponses: 2
    Dernier message: 14/11/2007, 14h49
  5. Réponses: 2
    Dernier message: 02/07/2007, 16h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo