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

Apache Discussion :

[url rewriting] Regex plus propre ?


Sujet :

Apache

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juillet 2003
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 35
    Points : 31
    Points
    31
    Par défaut [url rewriting] Regex plus propre ?
    Bonjour,

    Je viens vers vous car j'ai un soucis dans mes regex pour l'url rewriting d'un site.

    Je vous expose d'abord le principe (courant) :
    une page présente des voitures d'occasion, on peut chercher dans cette page les véhicules suivant des critères :
    -marque
    -modèle
    -énergie
    -département

    En +, il y a des critères d'ordre :
    -prix
    -marque
    -département

    Je peux donc vouloir rechercher : toutes les peugeots, les peugeots diesel classées par prix etc ...

    Je m'étais lancé dans un htaccess couvrant toutes les situations mais je suis sûr qu'il existe une solution beaucoup plus propre si on utlise bien les regex (là, je suis proche de mes limites ).

    J'étais parti comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    ################################
    # OCCASION DE MOINS DE 2 ANS ! #
    ################################
     
    # Page général : /occasion-moins-2-ans/
    RewriteRule ^occasion-moins-2-ans/$ /occasion_moins_2ans.php [L]
    #Tri par prix
    RewriteRule ^occasion-moins-2-ans/prix/(progressif.html)?$ /occasion_moins_2ans.php?tri=prix&sens=ASC [L]
    RewriteRule ^occasion-moins-2-ans/prix/degressif.html$ /occasion_moins_2ans.php?tri=prix&sens=DESC [L]
     
    #Tri par marque
    RewriteRule ^occasion-moins-2-ans/marque/(progressif.html)$ /occasion_moins_2ans.php?tri=marque&sens=ASC [L]
    RewriteRule ^occasion-moins-2-ans/marque/degressif.html$ /occasion_moins_2ans.php?tri=marque&sens=DESC [L]
     
    #Tri par dept
    RewriteRule ^occasion-moins-2-ans/departement.html$ /occasion_moins_2ans.php?tri=dept [L]
     
    # Page avec seulement le début : /occasion-moins-2-ans/12/
    RewriteRule ^occasion-moins-2-ans/([0-9]+)/(index.html)?$ /occasion_moins_2ans.php?debut=$1 [L]
     
    # Page avec seulement la marque (a-z, A-Z, -) : /occasion-moins-2-ans/renault/
    RewriteRule ^occasion-moins-2-ans/([A-Za-z0-9\-]+)/(index.html)?$ /occasion_moins_2ans.php?marque=$1 [L]
     
    # Page avec la marque + debut : /occasion-moins-2-ans/renault/12/
    RewriteRule ^occasion-moins-2-ans/([A-Za-z0-9\-]+)/([0-9]+)/(index.html)?$ /occasion_moins_2ans.php?marque=$1&debut=$2 [L]
    etc...

    En fait c'est parce que j'utilise la condition last à chaque fois car j'arrive pas à enchainer les conditions sinon (marque + prix asc, modele + dept desc , etc...)

    Si vous avez qq conseils, je suis preneur !

    Merci d'avance pour le coup de pouce.
    @+
    Seb

  2. #2
    vic
    vic est déconnecté
    Membre confirmé

    Profil pro
    Inscrit en
    Août 2002
    Messages
    431
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 431
    Points : 498
    Points
    498
    Par défaut
    En gros tu veux faire un moteur de recherche avec des RewriteRules, pourquoi pas c'est original au moins

    Remarque d'ordre général : si tu veux combiner plusieurs critères dans la même url, il faut un moyen de savoir où sont placés les critères. J'en vois deux :
    * Mettre toujours le même nombre de critères et dans le même ordre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^occasion-moins-2-ans/([^/]*)/([^/]*)/([^/]*) /occasion_moins_2ans.php?prix=$1&marque=$2&page=$3
    * Ajouter un marqueur pour identifier les champs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    RewriteRule (.*)/prix_([^/]*)/(.*) $1/$3?prix=$2 [C]
    RewriteRule (.*)/marque_([^/]*)/(.*) $1/$3&marque=$2 [C]
    RewriteRule (.*)/page_([^/]*)/(.*) $1/$3&page=$2 [C]
    RewriteRule .*\?(.*) /occasion_moins_2ans.php?$1
    Non testé .... enfin tu as l'idée.

Discussions similaires

  1. URL rewriting - REGEX
    Par tydoo34 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 5
    Dernier message: 07/11/2011, 02h47
  2. Réponses: 1
    Dernier message: 26/05/2008, 14h02
  3. url rewriting ne fonctionne plus
    Par WinBernardo dans le forum Apache
    Réponses: 2
    Dernier message: 02/12/2006, 13h13
  4. [Url Rewriting] Regex complexe
    Par T0xF0x dans le forum Apache
    Réponses: 7
    Dernier message: 27/05/2006, 21h35
  5. [RegEx] url rewriting - regex
    Par vnk600 dans le forum Langage
    Réponses: 1
    Dernier message: 20/11/2005, 22h42

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