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 :

[.htaccess] Passer des paramètres d'URL en nom de fichier


Sujet :

Apache

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2010
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 26
    Points : 13
    Points
    13
    Par défaut [.htaccess] Passer des paramètres d'URL en nom de fichier
    bonjour tous le monde
    je voulais réecrire mes liens de genre:
    http://mon_sit/dossier/doss.php?x=1& y=1& z=20
    de cette façon:
    http://mon_sit/dossier/doss-1-1-20.html
    mais les liens ne sont pas réecrits
    Voici mon code situé dans la page .htaccess crée dans le même dossier ou se trouvant les pages web:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <IfModule mod_rewrite.c>
    Options +FollowSymLinks
    RewriteEngine On                                                    
    RewriteRule   ^doss-([0-9]*)-([0-9]*)-([0-9]*).html$     /doss.php?x=$1y=$2&z=$3 
     
    </IfModule>
    Merci pour Vos aides

  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
    On ne le répètera jamais assez : mod_rewrite ne modifie pas le code HTML qui est renvoyé au navigateur, le module ne fait que modifier la signification des URL demandées à Apache. Il faut modifier toi-même le code HTML de tes pages pour mettre les URL au bon format.

    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
    Membre à l'essai
    Inscrit en
    Février 2010
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 26
    Points : 13
    Points
    13
    Par défaut
    Bonjour Mac,merci pour vos aides
    je m'excuse Mac ,j'ai pas bien compris ton explication;qu'est ce que je devais faire pour que mes liens apparaîssent de cette forme
    http://mon_sit/dossier/doss-1-1-20.html
    Merci beaucoup

  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
    Editer ton code HTML et mettre <a href="/dossier/doss-1-1-20.html"> au lieu de <a href="/dossier/doss.php?x=1&y=1&z=20">.

    Ou alors je n'ai pas compris la question initiale ("réécrire" est un mot très ambigu)

    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
    Membre à l'essai
    Inscrit en
    Février 2010
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 26
    Points : 13
    Points
    13
    Par défaut
    bonjour
    je m'excuse j'ai commis une faute dans l'extension c'est du php et non du html.
    donc ,je voulais réecrire mes liens de genre:
    http://mon_sit/dossier/doss.php?x=1& y=1& z=20
    de cette façon:
    http://mon_sit/dossier/doss-1-1-20.php
    mais les liens ne sont pas réecrits

  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
    C'est la même chose : tu mets .php à la place de .html dans ton .htaccess. Mais une fois de plus, la question est ambigüe : qu'entends-tu par "les liens ne sont pas réecrits" ? Si tu t'attends à ce qu'Apache modifie le code HTML, je le répète, ce n'est pas possible.

    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
    Membre à l'essai
    Inscrit en
    Février 2010
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 26
    Points : 13
    Points
    13
    Par défaut
    Merci beaucoup Mac pour vos aides et ta patience

    1/à propos ta question:qu'entends-tu par "les liens ne sont pas réecrits" ?
    tout simplement je voudrais que lorsque je clique sur un tel lien dirigeant logiquement à la page
    :http://mon_sit/dossier/doss.php?x=1& y=1& z=20
    l'URL qui s'affiche à la barre d'adresse sera
    :http://mon_sit/dossier/doss-1-1-20.php
    2/à propos ta solution de corriger ça:
    <a href="/dossier/doss.php?x=1&y=1&z=20">
    moi j'ai pas ça dans mon code ,c'est un site en php orienté objet.
    3/ en copiant http://mon_sit/dossier/doss.php?x=1& y=1& z=20 dans le "notepad"; je trouve du 20%
    http://mon_sit/dossier/doss.php?x=1&20%y=1&20%z=20
    est ce que je prend en compte ce 20% dans mon fichier .htaccess
    4/finalement je m'excuse pour ma français cassée parce que je suis pas français

  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
    Points : 12 977
    Points
    12 977
    Par défaut
    Citation Envoyé par DJOOOO Voir le message
    2/à propos ta solution de corriger ça:
    <a href="/dossier/doss.php?x=1&y=1&z=20">
    moi j'ai pas ça dans mon code ,c'est un site en php orienté objet.
    C'est pourtant ce qu'il faut faire. Effectivement, j'imagine bien que ce lien tel quel n'existe pas : il faut modifier le code PHP pour qu'il génère des href au nouveau format. Et tu n'as pas d'autre choix que de faire ça, malheureusement.

    Citation Envoyé par DJOOOO Voir le message
    3/ en copiant http://mon_sit/dossier/doss.php?x=1& y=1& z=20 dans le "notepad"; je trouve du 20%
    Si tu trouves des %20, je dirais que ce n'est pas normal : c'est le code PHP qui génère les URL (les href) qui ajoute ces espaces (%20 codé pour les URL) en trop. Ce que tu peux faire, c'est tester que les URL sans les %20 fonctionnent correctement : http://mon_sit/dossier/doss.php?x=1&y=1&z=20. Si les URL sans les %20 fonctionnent bien, pas la peine de les prendre en compte dans ton .htaccess.

    Et sinon, le .htaccess que tu donnes me semble correct : ta tâche principale maintenant consiste à faire en sorte que ton application génère des URL au nouveau format.

    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

  9. #9
    Membre à l'essai
    Inscrit en
    Février 2010
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 26
    Points : 13
    Points
    13
    Par défaut
    bonjour
    je reviens de nouveau parce que mon problème n'est pas règlé:
    1/j'explique de nouveau mon problème: j'attends pas à ce qu'Apache modifie mon code HTML mais ,selon mes informations ,l'url_writing va renvoyer la même chose que si l'internaute avait demandé la page http://mon_sit/dossier/doss.php?x=1&y=1&z=20;dond ce que je veux: l'URL qui s'affichera à la barre d'adresse sera
    :http://mon_sit/dossier/doss-1-1-20.php
    2/à propos le "20%";c'est règlé

  10. #10
    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
    J'insiste également de mon côté : l'URL qui est affichée dans la barre d'adresse du navigateur est l'URL qui figure dans le code HTML de la page, donc tant que le code HTML ne contient pas la bonne URL, ça n'ira pas. Sûrement qu'il faut modifier des pages PHP pour faire ça mais je ne peux pas t'aider sur ce sujet, tout dépend de ton appli/site.

    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

  11. #11
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    +1 @_Mac_

    Je pense que tu as une mauvaise vision du comment les choses se déroulent.
    La réécriture dont tu parle est l'inverse de ce que tu pense à mon avis.
    La réécriture en tout cas ne renvoie rien, c'est l'inverse, elle va réécrire QUE les URLs entrantes.

    Les instructions que tu mets dans le htaccess va "ré-ecrire" une requête HTTP entrante, une URL que tu vas recevoir :
    -> c'est à dire ceci : http://mon_sit/dossier/doss-1-1-20.php
    en une autre URL que Php pourra exploiter.
    -> c'est à dire ceci : dossier/doss.php?x=1&y=1&z=20


    La seule solution pour toi, c'est de créer des liens, des URLs sous cette forme : http://mon_sit/dossier/doss-1-1-20.php
    C'est à toi de coder en php (ou/et à l'aide des infos de ta Bdd) pour faire ainsi.
    Tous les liens, sans exceptions devront être sous cette forme.

    De cette façon, si un internaute click sur le lien ci-dessus, ton serveur va recevoir cette requête HTTP, le htaccess ayant la règle de réécriture, elle va opérer.
    L'URL qui sera affiché dans la barre d'adresse sera bien : http://mon_sit/dossier/doss-1-1-20.php. Les chose se passent de manière transparente.


    La réécriture c'est l'ensemble de 2 opérations, l'un ne va pas sens l'autre :
    1/ Produire soit même des liens (urls) selon la règle qu'on s'est fixée
    2/ Un htacces avec la règle de réécriture
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  12. #12
    Membre à l'essai
    Inscrit en
    Février 2010
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 26
    Points : 13
    Points
    13
    Par défaut
    Merci les amis pour ces éclairages

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

Discussions similaires

  1. [Thickbox] Passer des paramètres d'URL dans un JS
    Par Erwan31 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 15/03/2009, 21h52
  2. Passer des paramétres dans une URL
    Par adrix26 dans le forum SharePoint
    Réponses: 3
    Dernier message: 04/06/2008, 16h54
  3. Passer des paramètres à SugarCRM dans l'url
    Par adilooo dans le forum SugarCRM
    Réponses: 0
    Dernier message: 28/04/2008, 17h48
  4. Réponses: 5
    Dernier message: 07/03/2007, 22h55
  5. Passer des paramètres à l'URL de retour d'une action
    Par et.rond.et.rond dans le forum JSF
    Réponses: 2
    Dernier message: 03/08/2006, 23h03

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