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 :

Tiret et rewriting


Sujet :

Apache

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 30
    Par défaut Tiret et rewriting
    Bonjour,
    J'utilise actuellement cette règle pour réécrire mes urls
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^video/([-a-z0-9]*)-([-_a-zA-Z0-9]+)$ /index.php?media=video&rewrite=$1&code=$2 [L]
    Tout marche bien, sauf que lorsque la $2 contient un tiret, la variable GET se trouve amputée de tous les caractères précédant.

    le tiret contenu dans $2 est interprété comme un séparateur alors qu'il ne l'est pas.

  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
    Par défaut
    C'est à cause du * dans le premier groupe de parenthèses. L'expression dans son ensemble n'est pas assez "stricte" pour indiquer clairement à Apache où commence justement $2. Tout ce que dit ton expression c'est que le dernier groupe peut contenir un - mais pas nécessairement et est précédé par un -. Vu comme ça, sachant qu'il y a une * dans le premier groupe, Apache va traiter en priorité ce * en mettant un maximum de caractères dans $1 pour ne garder que le dernier - comme séparateur de $2. C'est le comportement par défaut du parseur qui explique qu'on peut mettre simplement (.*) pour récupérer toute l'URL sans le ^ devant et le $ à la fin (^(.*)$).

    Bref, revoie la syntaxe de ton expression pour dire à Apache comment clairement identifier $1 et $2 : - comme simple séparateur, vu qu'il est à la foins dans l'expression de $1 et de $2, n'est pas suffisant.

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

Discussions similaires

  1. Problème url rewriting et tiret
    Par piedbleu dans le forum Apache
    Réponses: 3
    Dernier message: 14/05/2012, 17h47
  2. URL rewriting et tirets
    Par dusk666 dans le forum Apache
    Réponses: 8
    Dernier message: 18/11/2010, 23h18
  3. Réponses: 1
    Dernier message: 04/08/2010, 11h36
  4. Réponses: 4
    Dernier message: 30/06/2009, 18h39
  5. [Url Rewriting] les tirets
    Par masseur dans le forum Apache
    Réponses: 1
    Dernier message: 17/08/2007, 14h10

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