Affichage des résultats 1 à 7 sur 7

Discussion: Variables POST perdus lors d'un url rewrite

  1. #1
    Membre
    Date d'inscription
    November 2011
    Messages
    252

    Variables POST perdus lors d'un url rewrite

    Bonjour,

    J'aimerais bien avoir un url rewrite sur un formulaire.

    J'ai essaye une directive mais les variables POST sont perdues et le formulaire n'est donc pas accepte.

    J'ai publie le probleme a http://www.sitepoint.com/forums/show...rameters/page2
    mais sans succes pour le moment.

    Pour resumer, j'ai deux directives, une pour changer
    user/login
    en
    engine/modules/user/login.php

    La voila:
    RewriteRule ^user/login$ engine/modules/user/login.php

    Et une autre, (celle qui ne marche pas comme je voudrais) pour changer
    engine/modules/user/login.php
    en
    user/login

    La voila:
    RewriteCond %{IS_SUBREQ} false
    RewriteRule ^engine/modules/user/login\.php$ user/login [R=301,P]

    Le probleme avec cette seconde directive est que les variables POST sont perdus lors du rewrite.

  2. #2
    Membre
    Date d'inscription
    December 2009
    Messages
    1 649

    Re : Variables POST perdus lors d'un url rewrite

    J'ai l'impression qu'il y a confusion.

    Tu veux faire de la ré-écriture d'url ou une redirection ?

    Dans le second cas :
    RewriteRule ^engine/modules/user/login\.php$ user/login [R=301,P]
    n'est-ce pas une redirection ?

    [R] (force Redirect)
    Redirect the URL to a external redirection
    http://www.widexl.com/tutorials/mod_rewrite.html
    Sauvegardez vos données et stockez les en dehors de votre serveur !

  3. #3
    Membre
    Date d'inscription
    November 2011
    Messages
    252

    Re : Variables POST perdus lors d'un url rewrite

    Effectivement, c'est une redirection, et ca explique la perte des variables post. Y aurait il moyen de faire unere-ecriture d'url alors ?
    Merci !

  4. #4
    Membre
    Date d'inscription
    December 2009
    Messages
    1 649

    Re : Variables POST perdus lors d'un url rewrite

    Si tu veux faire une ré-écriture d'url, l'adresse ne va pas changer dans la barre d'adresse du navigateur. On est bien d'accord.

    Et bien tu peux prendre exemple sur ta première ré-écriture qui semble fonctionner.
    RewriteRule ^user/login$ engine/modules/user/login.php
    Par contre je ne comprend pas ce que tu peux faire.
    engine/modules/user/login.php doit correspondre à user/login
    mais user/login doit appeler engine/modules/user/login.php

    Ça ne peut pas marcher.
    Si tu veux ré-écrires tes url, c'est pour communiquer des adresses propres, lisibles. Donc il n'y a aucune raison d'écrire engine/modules/user/login.php dans un script, un formulaire ou une page web. Tu dois écrire ton formulaire pour qu'il envoi les données vers user/login
    Sauvegardez vos données et stockez les en dehors de votre serveur !

  5. #5
    Membre
    Date d'inscription
    November 2011
    Messages
    252

    Re : Variables POST perdus lors d'un url rewrite

    Et bien la directive

    Code:
    RewriteRule ^user/login$ engine/modules/user/login.php
    permet a l'utilisateur de saisir l'url user/login et au serveur de trouver le script php correspondant.

    Et la directive

    Code:
    RewriteRule ^engine/modules/user/login\.php$ user/login [R=301,P]
    est la pour afficher l'url user/login meme si l'utilisateur saisi l'url engine/modules/user/login.php

    Cette seconde directive etant une redirection, on perd alors les parametres du post.

    Une solution, comme tu l'indiques, est d'avoir l'url user/login dans l'attribut action du formulaire.

    Mais cela rend le script dependant de la presence du module url rewrite et je suis un peu reticent devant cette dependance.. peut-etre a tort ?

  6. #6
    Membre
    Date d'inscription
    December 2009
    Messages
    1 649

    Re : Variables POST perdus lors d'un url rewrite

    Citation Envoyé par stephaneeybert Voir le message
    Mais cela rend le script dependant de la presence du module url rewrite et je suis un peu reticent devant cette dependance.. peut-etre a tort ?
    Tout comme le référencement de ton site dépend de l'url rewrite.
    L'url rewrite est un composant essentiel et indispensable de ton application. Pourquoi serais-tu amené à le désactiver ?

    La meilleur façon pour que l'url réelle ne soit pas utilisée, c'est de ne jamais la communiquer à l'extérieure de ton application.

    Une bonne idée serait de générer tes urls de façon centralisée.

    Par exemple avec le framework Zend, on passe un tableau associatif à une fonction qui retourne l'url.

    Code:
    $this->url(array('module'=> "myModule", 'controller'=> "myController", 'action'=> "myAction")) // Retourne ton url
    Sauvegardez vos données et stockez les en dehors de votre serveur !

  7. #7
    Membre
    Date d'inscription
    November 2011
    Messages
    252

    Re : Variables POST perdus lors d'un url rewrite

    Merci pour cette explication. Je crois que je vais integrer les urls dans les formulaires.

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •