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] Sauter un des paramètres de l'URL lors de la réécriture


Sujet :

Apache

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de The Molo
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    240
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 240
    Par défaut [URL Rewriting] Sauter un des paramètres de l'URL lors de la réécriture
    Bonjour à tous,

    Je ne sais pas si je post au bon endroit mais je me lance :

    Je mets en place l'URL Rewriting sur un de mes sites développé en PHP. Mon soucis est que j'aimerais ne pas afficher tous les paramètres d'une URL lors de la réécriture.

    Exemple : page.php?id=45&titre="manger" deviendrait => page-manger.html

    Pour être plus claire, je ne veux pas mettre l'id de ma page dans l'URL.

    Le problème est que je ne connais pas la syntaxe (à mettre dans le .htaccess) pour "sauter" un paramètre de l'URL...

    Quelqu'un a une idée ?

    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
    Par défaut
    Citation Envoyé par The Molo Voir le message
    Je ne sais pas si je post au bon endroit
    Si, c'est là

    Citation Envoyé par The Molo Voir le message
    Pour être plus claire, je ne veux pas mettre l'id de ma page dans l'URL.

    Le problème est que je ne connais pas la syntaxe (à mettre dans le .htaccess) pour "sauter" un paramètre de l'URL...
    Moi non plus et personne ne pourra te répondre, je pense, sauf à coder en dur que pour manger c'est id=45 qu'il faut. Bref 3 alternatives :
    • Faire apparaître l'ID dans l'URL : page-manger-45.html ou page-45-manger.html par exemple
    • Faire un mapping statique dans un fichier .htaccess :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      RewriteRule page-manger-45\.html page.php?id=45&titre=manger [L]
    • Rediriger page-*.html sur une page PHP qui va rechercher la bonne page dans une base de données par exemple à partir du titre. Mais cela suppose que le titre est unique parmi toutes tes pages.

    Après, si tu veux, tous les sites qui utilisent des ID les font apparaître dans l'URL, ça ne gêne personne, en fait.

  3. #3
    Membre éclairé Avatar de The Molo
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    240
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 240
    Par défaut
    Merci pour votre réponse

    Je vais donc opter pour votre 3è solution, la redirection sur une page PHP.

    Si j'ai bien compris :

    1) dans le fichier .htaccess, je dois rediriger vers une page PHP
    2) dans ma page PHP, donner la bonne URL qui est stockée dans la Base de données

    Est-ce bien cela?

    Par contre, je ne vois pas comment réaliser cela en pratique (tant dans le fichier htacess que dans la page PHP).

    Auriez-vous un tutoriel ou un bout de code sous la main ?

    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
    Par défaut
    Pour la redirection vers un fichier PHP :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteEngine on
    RewriteRule page-.*\.html mapage.php [L]
    Pour la page PHP mapage.php, elle ne va pas faire de redirection : elle récupère l'URL demandée ($_SERVER["REQUEST_URI"] devrait renvoyer /page-....html), triture cette URL pour récupérer le titre, se connecte à un base de données, récupère l'ID, construit et renvoie la page qui correspond à cet ID, par exemple en faisant un truc du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    ...
    // Titre de la page recupere depuis l'URL
    $titre = ...;
    ...
    // On recupere l'ID de cette page
    $id = ...;
    ...
    // On affiche la page
    include("page.php");
    et dans page.php, tu utilises les variables toutes prêtes $titre et $id au lieu d'aller les chercher dans la query string (avec $_GET par exemple).

    Pour résumer, tu crées le .htaccess que j'ai donné au dessus, tu crées ton script mapage.php qui récupère le titre dans l'URL, va chercher l'ID et appelle page.php, et tu modifies page.php pour utiliser les variables $titre et $id déjà prêtes ("pour aller plus vite") au lieu d'aller les chercher dans $_GET.

    Je ne sais pas si c'est bien clair

  5. #5
    Membre éclairé Avatar de The Molo
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    240
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 240
    Par défaut
    Je vous avoue que je n'ai pas tout compris

    Je vais prendre un expemple :

    Toutes mes pages sont du style : produit-49.htm.

    Dans le fichier .htaccess, je redirige à chaque fois sur trt.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteEngine on
    RewriteRule produit-.*\.html trt.php [L]
    Une fois dans la page trt.php, je ne comprends pas très bien ce que vous dites...

    Que doit-elle faire au juste ?

  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
    Citation Envoyé par The Molo Voir le message
    Toutes mes pages sont du style : produit-49.htm.
    Comprends plus : je croyais qu'il ne devait pas y avoir d'ID dans les URL

    Bref, la page trt.php doit :
    1. Récupérer l'URL initiale demandée : $_SERVER["REQUEST_URI"]
    2. Dans cette URL, récupérer le titre de la page => $titre
    3. Requête dans une base de données pour récupérer l'ID de la page à partir de son titre => $id
    4. include du fichier PHP qui traite habituellement les URL du type page.php?id=45&titre=manger

    Et dans page.php, tu utilises les variables $titre et $id qui viennent de trt.php au lieu de les récupérer comme avant à partir de $_GET.

    Je n'en dis pas plus car ce serait écrire le code à ta place

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

Discussions similaires

  1. [URL rewriting] Supprimer des paramètres de l'URL
    Par yann18 dans le forum Apache
    Réponses: 5
    Dernier message: 09/06/2010, 14h04
  2. Passer des paramétres dans une URL
    Par adrix26 dans le forum SharePoint
    Réponses: 3
    Dernier message: 04/06/2008, 16h54
  3. [URL Rewriting] Problème avec un paramètre
    Par antitrust56 dans le forum Apache
    Réponses: 11
    Dernier message: 07/11/2007, 18h40
  4. Chemin des scripts avec l'URL Rewriting
    Par mrgingle dans le forum Apache
    Réponses: 1
    Dernier message: 06/01/2007, 12h51
  5. Paramètres pour le Url Rewriting
    Par moscovisci dans le forum Apache
    Réponses: 1
    Dernier message: 29/12/2006, 16h05

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