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 :

Variable GET et URL rewriting


Sujet :

Apache

  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 29
    Points : 8
    Points
    8
    Par défaut Variable GET et URL rewriting
    Bonjour à tous.
    J'essaie de réécrire mes URL de la forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://localhost/~user/test/page.php?page=accueil&id=1
    en :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://localhost/~user/test/accueil/1
    Pour cela, j'utilise le .htaccess suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteEngine on
    RewriteRule ^accueil/(.*)$ page.php?page=accueil&id=$1 [L]
    Je suis bien redirigé sur la page mais la valeur du $_GET['id'] ne m'est plus accessible. Y a t-il une directive à ajouter pour pouvoir utiliser les variables ?

    Merci.

  2. #2
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 29
    Points : 8
    Points
    8
    Par défaut
    Apparemment le flag QSA permettrait de résoudre le problème ...
    J'ai donc modifié ma règle en :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^accueil/(.*)$ page.php?page=accueil&id=$1 [QSA,L]
    Mais toujours aucun changement ...

  3. #3
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 29
    Points : 8
    Points
    8
    Par défaut
    Humm il semblerait que j'avance ...

    Le problème ne viendrais pas de l'url rewriting (ou plutot si) mais plus particulièrement de ma méthode d'inclusion des paramètres.

    En fait, j'utilise ce script pour insérer du contenu au sein d'une "page type".
    Ainsi, j'ai ce code (page.php) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
      require("api/config.php");
      echo "test";
      if (isset($_GET['page'])){
    	include(htmlentities($_GET['page']).".php");
      }
      else
    	include("accueil.php");
    En utilisant ces règles :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    RewriteEngine on
    RewriteBase /~user/test
     
    RewriteRule ^accueil$ page.php?page=accueil [L]
    RewriteRule ^(.*)/(.*)$ page.php?page=$1&id=$2 [L]
    Quand je tape : http://localhost/~user/test/accueil, il "zappe" page.php et accède directement à accueil.php. Du coup, mon include ne sert à rien.

    En revanche, quand je tape http://localhost/~user/test/rubrique/1, il écrit bien le message "test" suivi de l'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Warning: include(redirect:/~user/test/page.php.php) [function.include]: failed to open stream: No such file or directory in /home/squaredge/public_html/test/page.php on line 9
    L'erreur d'include est logique mais du coup j'ai de gros doute sur l'utilisation de ma page.php ... Quelqu'un aurait une idée pour réaliser cela proprement ?
    Merci.

  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
    Citation Envoyé par Squaredge Voir le message
    Quand je tape : http://localhost/~user/test/accueil, il "zappe" page.php et accède directement à accueil.php. Du coup, mon include ne sert à rien.
    Je ne suis pas sûr mais ça pourrait venir du fait que la négociation de contenu est activée. Ca me semble confirmé par le fait que dans ton message d'erreur, c'est écrit page.php.php (.php 2 fois). Essaie de mettre Options -MultiViews en haut de ton .htaccess.

    Citation Envoyé par Squaredge Voir le message
    En revanche, quand je tape http://localhost/~user/test/rubrique/1, il écrit bien le message "test" suivi de l'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Warning: include(redirect:/~user/test/page.php.php) [function.include]: failed to open stream: No such file or directory in /home/squaredge/public_html/test/page.php on line 9
    L'erreur d'include est logique mais du coup j'ai de gros doute sur l'utilisation de ma page.php ... Quelqu'un aurait une idée pour réaliser cela proprement ?
    Merci.
    Ne pas mettre d'include relatif mais passer par un include avec un chemin absolu (construit avec $_SERVER["DOCUMENT_ROOT"]) ?

Discussions similaires

  1. GET et URL Rewriting
    Par black-hat dans le forum Apache
    Réponses: 1
    Dernier message: 05/06/2012, 20h54
  2. règle url rewriting, conservation des variables GET
    Par speedev dans le forum Apache
    Réponses: 1
    Dernier message: 18/05/2009, 10h33
  3. [Mail] mode texte et variables GET des URL
    Par tynmar dans le forum Langage
    Réponses: 1
    Dernier message: 31/03/2008, 19h44
  4. [Javascript][get]Enlevez des variables dans une url
    Par bouba83 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 08/12/2006, 14h31
  5. Réponses: 6
    Dernier message: 19/12/2005, 13h41

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