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 :

[URL Rewriting] Reconstruire le Get


Sujet :

Apache

  1. #1
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 45
    Par défaut [URL Rewriting] Reconstruire le Get
    Bonsoir,

    J'aimerais utiliser l'url rewriting pour obtenir des urls du type http://domaine.fr/un-article/ et ensuite reconstruire le Get dans php (et non dans Apache).

    J'ai réutilisé le htaccess de wordpress pour point de départ.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    </IfModule>
    J'arrive à récupérer le Get, seulement si j'écris l'url avec un ? : http://domaine.fr/?un-article/.

    Pouvez-vous me donner un coup de pouce pour obtenir une url comme cité en haut ?

    Merci d'avance =)

  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
    Par défaut
    C'est la bonne façon de faire, mais ça veut dire quoi "reconstuire un Get" ? Tu veux récupérer l'URL initiale demandée par l'utilisateur ? Affiche le contenu de la variable $_SERVER, tu devrais avoir une entre avec cette valeur.

  3. #3
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 45
    Par défaut
    J'ai potasser un peu la chose et j'ai obtenu un premier résultat plutôt satisfaisant.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(preg_match('#uri#i', $_SERVER["REQUEST_URI"])):
    echo 'Page URI';
    else: echo 'Page Home';
    endif;
    J'aimerais cependant comprendre un peu plus les lignes de mon code .htacces.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <IfModule mod_rewrite.c> #si module présent
    RewriteEngine On #activation de la réécriture
    RewriteBase / #dossier racine des réécriture
    RewriteCond %{REQUEST_FILENAME} !-f #qu'est ce ?
    RewriteCond %{REQUEST_FILENAME} !-d #qu'est ce ?
    RewriteRule . /index.php [L] #document des réécriture ?
    </IfModule>
    Il y a t'il d'autre manière de récuppérer le Get sinon ?

  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
    Par défaut
    Une lecture de la doc standard peut aider à la compréhension Les RewriteCond -f et -d sont là pour bloquer la réécriture si l'URL demandée correspond à un fichier existant : toute URL ne correspondant pas à un fichier existant est renvoyé sur index.php.

    Pour la façon de faire, je l'ai dit :
    Citation Envoyé par _Mac_
    Affiche le contenu de la variable $_SERVER, tu devrais avoir une entre avec cette valeur.
    pour afficher le contenu du $_SERVER, fais un simple $_SERVER["REQUEST_URI"] doit renvoyé ce que tu cherches mais parfois, l'URL que ce paramètre va contenir sera l'URL vers index.php, pas l'URL initialement demandée, d'où qu'il faut vérifier avec un print_r($_SERVER).

  5. #5
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 45
    Par défaut
    Bonsoir,

    J'ai réussi à mettre tout cela en pratique avec mon portfolio.

    J'aimerais cependant savoir comment forcer le slash à la fin de chaque requete.

    Exemple :
    http://domaine.tld/contact => http://domaine.tld/contact/
    http://domaine.tld/work/projets1 => http://domaine.tld/work/projets1/

    Merci

  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
    Par défaut
    En le mettant dans les URL :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="/contact/">...</a>
    Ce n'est pas Apache qui va aller l'ajouter dans le code HTML : si le code HTML ne contient pas le /, Apache ne l'ajoutera pas, mais en revanche s'il y est, Apache n'ira pas non plus l'enlever. Donc il faut au moins qu'il soit présent dans tes liens.

  7. #7
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 45
    Par défaut
    Citation Envoyé par _Mac_ Voir le message
    En le mettant dans les URL :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="/contact/">...</a>
    Ce n'est pas Apache qui va aller l'ajouter dans le code HTML : si le code HTML ne contient pas le /, Apache ne l'ajoutera pas, mais en revanche s'il y est, Apache n'ira pas non plus l'enlever. Donc il faut au moins qu'il soit présent dans tes liens.
    Je voulais parler de l'URL du navigateur du visiteur, est ce possible de forcer le slash avec apache ou cela se passe côté php ?

  8. #8
    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
    Par défaut
    On parle bien de la même URL : le navigateur va afficher l'URL du lien (<a href="...">) sur lequel le visiteur a cliqué, alors si cette URL contient le / final, il y sera, s'il n'y est pas, il n'y sera pas.

    On peut toujours essayer de demander à Apache de rediriger le navigateur avec un / à la fin s'il n'y est pas, mais je ne trouve pas ça très propre : c'est pallier dans Apache une carence du code HTML et ça va faire faire des redirections dans tous les sens, beaucoup de trafic pour rien, ce n'est pas terrible. Mais bref : pour y arriver, comme d'hab', il faut arriver à distinguer les URL pour lesquelles il faut ajouter le / et les URL pour lesquelles il ne faut pas ajouter le / : à toi de nous dire comment on peut faire cette distinction.

Discussions similaires

  1. Url Rewriting et requete GET
    Par PouetteMan dans le forum Apache
    Réponses: 2
    Dernier message: 19/04/2011, 17h11
  2. récupération d'un paramètre get d'une url rewritée
    Par debido67 dans le forum Apache
    Réponses: 8
    Dernier message: 26/09/2008, 09h00
  3. Variable GET et URL rewriting
    Par Squaredge dans le forum Apache
    Réponses: 3
    Dernier message: 13/08/2008, 15h56
  4. Réponses: 4
    Dernier message: 23/05/2008, 12h58
  5. [URL Rewriting] Masquer les paramètres GET
    Par remyli dans le forum Apache
    Réponses: 8
    Dernier message: 12/03/2008, 17h50

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