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] Problème de réécriture pour une variable


Sujet :

Apache

  1. #1
    Membre confirmé Avatar de Sayrus
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    899
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 899
    Points : 570
    Points
    570
    Par défaut [URL Rewriting] Problème de réécriture pour une variable
    Hello,

    J'ai un petit problème avec mon URL rewriting pour une condition bien spécifique, la voici:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^([a-z-A-Z-_]+)/([0-9-a-z-A-Z-_]+)/profil-([0-9-a-z-A-Z-_]+)/profil/$ index.php?action=$2&id=$3&lang=$1 [L]
    La translation fonctionne mais la variable "id" qui représente /profil-([0-9-a-z-A-Z-_]+)/ ne fonctionne pas correctement...

    Si par exemple ma variable "id" vaut "madmax", alors ma variable vaudra bien "madmax"

    Par contre, si ma variable "id" vaut "mad-max", alors ma variable vaudra "max"...

    Ca ne fonctionne pas avec les "-"...

    Quelqu'un pourrait-il m'éclairer? car je rame...

    Merci beaucoup

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Cette règle est parfaitement correcte (mis à part une certaine redondance du caractère - dans vos différentes classes).

    Preuve en est avec une URL telle que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://localhost/mad-max-lang/mad-max-action/profil-mad-max-id/profil/
    J'obtiens (dump de $_GET) :
    Code X : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Array
    (
        [action] => mad-max-action
        [id] => mad-max-id
        [lang] => mad-max-lang
    )
    Le problème ne serait-il pas ailleurs ?

  3. #3
    Membre confirmé Avatar de Sayrus
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    899
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 899
    Points : 570
    Points
    570
    Par défaut
    Hello,

    Et bien j'ai pourtant vérifié, sans URL rewriting mon url se présente comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    index.php?action=com_me&id=mad-max&lang=fr
    Quand je rentre cette url, ma variable $_GET['id'] = "mad-max"

    avec l'url rewrité:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /fr/com_me/profil-mad-max/profil/
    la la variable $_GET['id']= "max"

    C'est bizarre... d'où peut bien provenir l'erreur?

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Vous n'auriez pas une autre règle qui interfèrerait, par exemple ? Auriez-vous la possibilité de retracer les actions de réécriture (directives RewriteLog et RewriteLogLevel) ?

  5. #5
    Membre confirmé Avatar de Sayrus
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    899
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 899
    Points : 570
    Points
    570
    Par défaut
    J'ai uniquement mon fichier .htaccess avec toutes les conditions

    Je peux le montrer si ça peut aider?

    Il n'est pas vraiment long...

    Je pense que l'erreur ce situe à ces quelques lignes...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    #Composants
    RewriteRule ^([a-z-A-Z-_]+)/([0-9-a-z-A-Z-_]+)/p-([0-9]+)/([0-9-a-z-A-Z-_]+)-([0-9-a-z-A-Z-_]+)/([0-9-a-z-A-Z-_]+)/$ index.php?action=$2&id=$5&lang=$1&pageNum=$3 [L]
    RewriteRule ^([a-z-A-Z-_]+)/([0-9-a-z-A-Z-_]+)/p-([0-9]+)/([0-9-a-z-A-Z-_]+)/$ index.php?action=$2&id=0&lang=$1&pageNum=$3 [L]
    RewriteRule ^([a-z-A-Z-_]+)/([0-9-a-z-A-Z-_]+)/([0-9-a-z-A-Z-_]+)-([0-9-a-z-A-Z-_]+)/action/([0-9-a-z-A-Z-_]+)/$ index.php?action=$2&id=$4&lang=$1&param=$5 [L]
    RewriteRule ^([a-z-A-Z-_]+)/([0-9-a-z-A-Z-_]+)/([0-9-a-z-A-Z-_]+)-([0-9-a-z-A-Z-_]+)/([0-9-a-z-A-Z-_]+)/$ index.php?action=$2&id=$4&lang=$1 [L]
    RewriteRule ^([a-z-A-Z-_]+)/([0-9-a-z-A-Z-_]+)/([0-9-a-z-A-Z-_]+)/$ index.php?action=$2&id=0&lang=$1 [L]
     
    #Composants (custom: Profil)
    RewriteRule ^([a-z-A-Z-_]+)/([0-9-a-z-A-Z-_]+)/profil-([0-9-a-z-A-Z-_]+)/profil/$ index.php?action=$2&id=$3&lang=$1 [L]
    RewriteRule ^([a-z-A-Z-_]+)/([0-9-a-z-A-Z-_]+)/profil-([0-9-a-z-A-Z-_]+)/param/([0-9-a-z-A-Z-_]+)/$ index.php?action=$2&id=$3&lang=$1&param=$5 [L]
    mais si il y en a une, je ne la vois pas

    Mais par contre "mad_max" fonctionne mais pas "mad-max"

  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
    Commence déjà par supprimer les - qui sont en trop :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^([a-zA-Z-_]+)/([0-9a-zA-Z-_]+)/profil-([0-9a-zA-Z-_]+)/profil/$ index.php?action=$2&id=$3&lang=$1 [L]
    Et si ça ne change rien, essaie de mettre \- :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^([a-zA-Z\-_]+)/([0-9a-zA-Z\-_]+)/profil-([0-9a-zA-Z\-_]+)/profil/$ index.php?action=$2&id=$3&lang=$1 [L]

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  7. #7
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    C'est votre quatrième règle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^([a-z-A-Z-_]+)/([0-9-a-z-A-Z-_]+)/([0-9-a-z-A-Z-_]+)-([0-9-a-z-A-Z-_]+)/([0-9-a-z-A-Z-_]+)/$ index.php?action=$2&id=$4&lang=$1 [L]
    Qui est appliquée avant celle de votre profil (la 6e) et qui a donc cet effet.

    Essayez de déplacer les règles les plus spécifiques (6 et 7) avant celles qui le sont moins (4). Sinon il faudra revoir les règles

  8. #8
    Membre confirmé Avatar de Sayrus
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    899
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 899
    Points : 570
    Points
    570
    Par défaut
    Effectivement en mettant les deux dernières avant et en rajoutant une autre ligne pour une condition particulière ça fonctionne très bien!

    Un grand merci à vous!

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

Discussions similaires

  1. [URL rewriting] Vérifier la présence d'une variable d'URL
    Par MatthieuFourcade dans le forum Apache
    Réponses: 2
    Dernier message: 15/02/2010, 17h32
  2. Problème d'arrondis pour une variable
    Par CélineM dans le forum SAS Base
    Réponses: 2
    Dernier message: 20/05/2008, 10h45
  3. [URL Rewriting] Problème avec plusieurs variables
    Par kwzprtt dans le forum Apache
    Réponses: 2
    Dernier message: 13/05/2008, 01h00
  4. [URL Rewriting] problème de réécriture
    Par gtraxx dans le forum Apache
    Réponses: 7
    Dernier message: 24/02/2008, 12h19
  5. [URL Rewriting] problème sur une règle
    Par Mike91 dans le forum Apache
    Réponses: 1
    Dernier message: 13/09/2007, 16h20

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