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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    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
    Globalement inoffensif
    Merci de respecter les règles du forum.
    Aucune question technique par MP !
    _______________________________________________________________________
    Cours Ruby et Ruby on Rails (RoR) - Cours PHP - FAQ Ruby / Rails - Livres Ruby / Rails
    Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
    Tutoriaux HTML/CSS et PHP

  2. #2
    Membre expérimenté
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    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
    Globalement inoffensif
    Merci de respecter les règles du forum.
    Aucune question technique par MP !
    _______________________________________________________________________
    Cours Ruby et Ruby on Rails (RoR) - Cours PHP - FAQ Ruby / Rails - Livres Ruby / Rails
    Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
    Tutoriaux HTML/CSS et PHP

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    225
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 225
    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 confirmé
    Inscrit en
    Décembre 2005
    Messages
    225
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 225
    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
    Membre expérimenté
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

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

    je viens de tester ta solution, et je retourne sur l'erreur 404
    Globalement inoffensif
    Merci de respecter les règles du forum.
    Aucune question technique par MP !
    _______________________________________________________________________
    Cours Ruby et Ruby on Rails (RoR) - Cours PHP - FAQ Ruby / Rails - Livres Ruby / Rails
    Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
    Tutoriaux HTML/CSS et PHP

  6. #6
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    225
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 225
    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