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 :

Problème de réécriture avec le point d'interrogation de _GET


Sujet :

Apache

  1. #1
    Nouveau membre du Club Avatar de frakosun
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2007
    Messages : 54
    Points : 38
    Points
    38
    Par défaut Problème de réécriture avec le point d'interrogation de _GET
    Bonjour,

    J'ai un problème avec le point d'interrogation ajouté dans l'url par _GET, je n'arrive pas à le supprimer... :/

    EN fait concrètement j'envoie un formulaire avec action=get sur la page page-virtuelle.html&

    Voici ma règle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ^dossier-virtuel/page-virtuelle\.html\&(.*)$ /results.php?$1 [L]
    qui fonctionne si j'appelle une page de ce type :
    dossier-virtuel/page-virtuelle.html&id=Test

    Le problème c'est que _get me rajoute un point d'interrogation et mes pages sont appelées ainsi :
    dossier-virtuel/page-virtuelle.html&?id=Test
    (du coup ça ne fonctionne pas)

    Comment puis-je faire pour soit enlever le point interrogation de l'url, soit le ré-écrire correctement svp ?
    Je précise qu'il n'y a pas qu'un paramètre id, mais beaucoup plus ^^

    merci !

  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
    Ne pas utiliser & en premier caractère. Une query string est nécessairement séparée du chemin par ? puis chaque paramètre de la query string par &. Ton navigateur (et c'est bien ton navigateur qui ajoute le ? après le &, rien à voir avec Apache, et c'est normal) ne trouve pas de ? dans l'URL de l'action donc comme c'est un get, il ajoute un ? puis les paramètres du formulaires séparés par &.

    Pourquoi utiliser & comme ça ?

    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

  3. #3
    Nouveau membre du Club Avatar de frakosun
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2007
    Messages : 54
    Points : 38
    Points
    38
    Par défaut
    Bonjour _Mac_ !
    Merci pour ta réponse. En fait j'ai vu qu'un module SEO faisait ça sur les forums IPB pour afficher les sujets suivants / précédents, donc je voulais tester quelque chose de similaire.

    Mais sinon concrètement l'idée de base c'est surtout de réécrire en .html cette page et de passer les variables dans l'url (il ya des filtres sur le résultat obtenu donc j'ai besoin de les garder pour les modifier).

    Si je me passe du '&' pour faire un truc dans ce genre :
    dossier-virtuel/page-virtuelle.html?id=Test

    je n'obtiens rien non plus... en fait je dois faire une mauvaise réécriture du '?' ou mal l'échapper (c'est pour ça que j'ai posté ici) parce que tout ce que je tente est incorrect. Du coup je cherche à l'éliminer vu que ma règle fonctionne sans :p

    Sinon je comprends pas ce que je fais mal :/

  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
    Je n'ai pas bien compris ce que tu cherches à faire. Mais sache que dans le premier membre d'un RewriteRule, seul le chemin de l'URL apparaît, pas la query string. Donc si tu as bien un ? comme il faut (sans le &), RewriteRule ^dossier-virtuel/page-virtuelle\.html(.*)$ matchera ton URL /dossier-virtuel/page-virtuelle\.html?... mais $1 sera vide. Mais ce n'est pas grave : si tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^dossier-virtuel/page-virtuelle\.html$ /results.php [L]
    results.php récupèrera logiquement la query string tout seul comme un grand et tu auras un $_GET["id"].

    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

  5. #5
    Nouveau membre du Club Avatar de frakosun
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2007
    Messages : 54
    Points : 38
    Points
    38
    Par défaut
    En fait j'ai essayé plein de choses comme ce que tu me conseilles, par ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ^dossier-virtuel/page-virtuelle\.html?(.*)$ /results.php?$1 [L]
    Si je fais ça effectivement la redirection fonctionne mais les _GET sont vides, du coup je ne récupère pas l'id et la page est vide.
    J'en conclue que $1 est vide mais je ne sais pas comment le remplir. C'est pour ça que j'avais essayé de passer par les '&' comme j'avais vu sur un forum.

    Donc si je résumer results.php ne récupèrer pas ma query string tout seul comme un grand.. :/ ou alors j'ai un conflit avec une autre règle tu crois ?

    Merci de m'aider

  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
    Citation Envoyé par frakosun Voir le message
    comme ce que tu me conseilles, par ex
    Je n'ai jamais conseillé ça, j'ai justement conseillé de ne pas utiliser le $1. Je répète donc :
    Citation Envoyé par _Mac_
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^dossier-virtuel/page-virtuelle\.html$ /results.php [L]
    On notera qu'il n'y a aucun (.*) ou $1 sur cette ligne et à juste cause : sans rien faire de particulier, mod_rewrite va reprendre automatiquement la query string, donc on peut librement l'oublier a priori. Sauf s'il y a par exemple d'autres règles.
    Peut-être qu'il manque un QSA :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^dossier-virtuel/page-virtuelle\.html$ /results.php [L,QSA]
    A essayer (et toujours sans $1 ou (.*)).
    Et à la limite, si tu veux vraiment remettre la query string, y a infiniment plus simple que le $1 qui ne marche pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^dossier-virtuel/page-virtuelle\.html$ /results.php?%{QUERY_STRING} [L]
    Citation Envoyé par frakosun Voir le message
    ou alors j'ai un conflit avec une autre règle tu crois ?
    Si tu ne nous dis pas tout, comment veux-tu qu'on t'aide ? C'est quoi, ces autres règles ?

    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
    Nouveau membre du Club Avatar de frakosun
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2007
    Messages : 54
    Points : 38
    Points
    38
    Par défaut
    Bonjour _Mac_,

    Jippy ça marche !! Alors en fait il fallait tout simplement ajouter [L,QSA] à la fin de la réécriture. J'avais déjà essayé ça au cours de mes nombreuses tentatives infructueuses, mais j'avais du le faire avec une règle légèrement différente visiblement...

    Donc finalement pas de problème de conflit !

    Encore un grand merci pour ton aide !

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

Discussions similaires

  1. Problème Eclipse Java avec les points d'arrêt
    Par _MattU_ dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 04/01/2010, 17h12
  2. RewriteRule avec un point d'interrogation
    Par mecmec dans le forum Apache
    Réponses: 1
    Dernier message: 11/01/2009, 00h53
  3. Message d'erreur avec des points d'interrogation
    Par Tintou dans le forum VBA Access
    Réponses: 2
    Dernier message: 23/01/2008, 09h34
  4. [Prototype] Requête Ajax ne passe pas avec des points d'interrogation
    Par Romalafrite dans le forum Bibliothèques & Frameworks
    Réponses: 1
    Dernier message: 09/12/2007, 22h31
  5. Problème de Regex ... avec un point
    Par bugalood dans le forum Langage
    Réponses: 2
    Dernier message: 29/05/2005, 10h26

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