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] N'avoir qu'une variable à afficher


Sujet :

Apache

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 73
    Points : 60
    Points
    60
    Par défaut [URL rewriting] N'avoir qu'une variable à afficher
    Bonjour les développeurs, j'aurai besoins de vos lumières sur l'url rewriting.

    Je voulais savoir si il était possible de changer une url (qui à la base comporte plusieurs variables) en n'affichant qu'une variable, dans l'exemple ci dessous,

    je veux changer l'url : main.php?btm=afficher&restriction=true&ca=0&ref=az123

    en : selectioner-az123.html

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    # renomage lorsque selectionner
    RewriteRule ^selectioner-([a-z]{2}[0-9]{3}).html main.php?btm=afficher&restriction=true&ca=$position_utilisateur&ref=$affichage[$Affichage_Annonce[1]] [L]
    et dans une logique semblable savoir s'il était possible de mélanger les caractères avec des entiers ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    # renomage commentaire
    RewriteRule ^commentaire-([a-z]{2}[0-9]{3}).html main.php?val=$affichage[$Affichage_Annonce[1]] [L]

  2. #2
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    C'est quoi $position_utilisateur ? Le souci c'est qu'Apache va faire de la réécriture totalement indépendamment de PHP, donc les seules infos qu'il a à sa dispo sont ce qui figure dans l'URL et les en-têtes HTTP. Donc si $position_utilisateur doit provenir d'un traitement PHP, tu ne peux récupérer sa valeur qu'en l'ajoutant dans l'URL ou dans un cookie.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 73
    Points : 60
    Points
    60
    Par défaut
    Merci pour votre réponse.
    D'accord, en effet toutes mes variables proviennent d'un traitement php, donc elles devront figurer dans le nouvel url si je comprends bien.

    Ca me parait envisageable ^^

    Et ma deuxieme question était : comment faire pour dire à apache que ma variable contient des chaines et des entiers ?
    L'idée c'est de faire ca : ([a-z]{2}[0-9]{3})

    Savez vous comment faire ?

  4. #4
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Tu as essayé avec cette expression ? Elle me paraît correcte. Si elle ne passe pas, c'est possible que ce soit à cause des multiplicateurs entre accolades. Essaie alors ([a-z][a-z][0-9][0-9][0-9])

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 73
    Points : 60
    Points
    60
    Par défaut
    les deux expressions ne fonctionnent pas :s

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    # renomage commentaire
    RewriteRule ^commentaire-([a-z][a-z][0-9][0-9][0-9]).html main.php?val=$affichage[$Affichage_Annonce[1]] [L]

  6. #6
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    C'est normal, je te disais qu'Apache n'y connaissait rien en PHP et que donc $affichage et compagnie, ça ne lui dit rien du tout.

    Faut peut-être prendre la peine de lire la doc Apache pour comprendre : dans un RewriteRule, les groupes de () qu'on définit dans le premier membre sont référencés dans l'ordre par des $1, $2, etc. dans le second membre. Dans ton cas, ton filtre (= premier membre) est ^commentaire-([a-z][a-z][0-9][0-9][0-9]).html. Ca fait 1 groupe entre () ([a-z][a-z][0-9][0-9][0-9]) donc ce qui matche ce truc entre parenthèses sera repris par $1 dans le second membre : main.php?val=$1. Donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^commentaire-([a-z][a-z][0-9][0-9][0-9]).html main.php?val=$1 [L]

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 73
    Points : 60
    Points
    60
    Par défaut
    Merci beaucoup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 16/02/2008, 00h28
  2. Réponses: 1
    Dernier message: 24/01/2008, 16h00
  3. Réponses: 2
    Dernier message: 29/11/2007, 18h41
  4. [URL Rewriting] mais où est ma variable ?
    Par Invité dans le forum Apache
    Réponses: 3
    Dernier message: 01/08/2007, 10h45

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