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 :

Ré-écriture d'URL : expression qui marche dans une fonction, mais pas dans le htacces


Sujet :

Langage PHP

  1. #1
    Expert éminent
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Points : 7 285
    Points
    7 285
    Par défaut Ré-écriture d'URL : expression qui marche dans une fonction, mais pas dans le htacces
    Bonjour à tous.

    ça fait 3 jours que je m'arrache les cheveux là-dessus, je me résoud à faire appel à vous

    Je souhaite transformer une URL reçue de ce genre :

    Seek-by-reference?val_selected=123&limite=0&d'autresparams dont je je moque

    en quelque chose comme ça :

    index.php?id_p=17&val_selected=123&limite=0

    id_p ne varie pas, val_selected peut être alphanumérique ou nul, et limite numérique uniquement.

    j'ai donc testé ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $chaine = 'Seek-by-reference?val_selected=123&limite=0&Submit_main.x=9&Submit_main.y=6';
    $motif = "Seek-by-reference\?val_selected=([a-zA-Z0-9]*)&limite=([0-9]+)";
    $nouvelle = "index.php?id_p=17&val_selected=\\1&limite=\\2";
     
    $chaine = ereg_replace($motif, $nouvelle, $chaine);
    ça marche très bien, ça me retourne l'url désirée. Cependant, quand je met cette ligne dans mon htaccess :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^Seek-by-reference?val_selected=([a-zA-Z0-9]*)&limite=([0-9]+).* index.php?id_p=17&val_selected=$1&limite=$2 [L]
    je me retrouve avec une belle erreur 404 de la mort qui tue... Est-ce que vous auriez une idée SVP ? Je commence un peu à désespérer

    d'avance

  2. #2
    Expert éminent
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Points : 7 285
    Points
    7 285
    Par défaut
    j'ai essayé d'échapper le ? dans ma directive, mais toujours le même soucis.

    J'ai essayé sinon cette directive :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^Seek-by-reference(.*) index.php?id_p=17$1 [L]
    ça marche un peu mieux dans le sens ou il m'affiche ma page, mais il ne prend aucun paramètre en compte à l'exception de mon id_p...

    ça doit être du aux deux ? successifs qu'il croise (?id_p=17?val_selected=...) mais je ne voit pas du tout comment le gérer

  3. #3
    Membre régulier
    Inscrit en
    Décembre 2005
    Messages
    225
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 225
    Points : 113
    Points
    113
    Par défaut
    Fais attention aux guillemets et aux apostrophes , tu peux soit remplacer ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $motif = "Seek-by-reference\?val_selected=([a-zA-Z0-9]*)&limite=([0-9]+)";
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $motif = "Seek-by-reference\\?val_selected=([a-zA-Z0-9]*)&limite=([0-9]+)";
    Ou utiliser des apostrophes au lieu des guillemets , à toi de choisir .

  4. #4
    Membre régulier
    Inscrit en
    Décembre 2005
    Messages
    225
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 225
    Points : 113
    Points
    113
    Par défaut
    Et dans ton fichier .htaccess tu dois avoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^Seek-by-reference\?(.*) index.php?id_p=17&$1 [L]

  5. #5
    Expert éminent
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Points : 7 285
    Points
    7 285
    Par défaut
    merci pour ta réponse

    je viens de tester ta solution, et je retourne sur l'erreur 404

  6. #6
    Membre régulier
    Inscrit en
    Décembre 2005
    Messages
    225
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 225
    Points : 113
    Points
    113
    Par défaut
    Désolé mais mes regex marchent très bien , je les ai testées avec ce testeur avec succés : http://www.lumadis.be/regex/test_regex.php .
    Si tu essaie d'accéder à Seek-by-reference sans paramétre , alors utilise cette regex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ^Seek-by-reference(\?|)(.*)
    Cette dérniére est compatible avec ou sans paramétre

Discussions similaires

  1. Objet existant reconnu dans une fonction mais pas dans une autre
    Par Jiyuu dans le forum Général Python
    Réponses: 0
    Dernier message: 20/09/2011, 18h19
  2. Réponses: 5
    Dernier message: 18/03/2009, 19h31
  3. Recherche d'une valeur présent dans une table mais pas dans une autre
    Par bossLINDROS dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 19/06/2008, 15h12
  4. Réponses: 9
    Dernier message: 13/03/2008, 01h34
  5. Ce qui est dans une table mais pas dans l'autre !
    Par youyoule dans le forum Requêtes
    Réponses: 4
    Dernier message: 30/12/2007, 12h57

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