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 avec plusieurs paramètres


Sujet :

Apache

  1. #1
    Membre à l'essai
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Novembre 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Novembre 2011
    Messages : 9
    Points : 12
    Points
    12
    Par défaut URL rewriting avec plusieurs paramètres
    Bonjour à tous,

    Voila mon soucis. Je voudrais utiliser l'url rewriting dans mon site de maniere a ce que mes url donne ceci :

    http://www.mon-site.fr/accueil
    http://www.mon-site.fr/accueil/presentation

    avec a la base ceci :
    index.php?c=accueil
    index.php?c=accueil&var=presentation

    Notez que je voudrais que les paramètres soit séparer par un "/"

    Voici mon fichier htaccess :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    RewriteEngine On
     
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteCond %{REQUEST_FILENAME} !-f
     
      RewriteRule (.*) index.php?c=$1 [L]
    Jusque la tous marche bien mais j'ai un soucis a trouver la syntaxe pour passer un deuxième paramètre (ex: presentation)

    J'ai essayé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule (.*)\/(.*) index.php?c=$1&var=$2 [L]
    Mais visiblement je n'ai pas compris le fonctionnement de l'url rewriting car ca ne marche pas ... Quelqu'un pourrait m'aider?

  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
    Il faut enlever le \ devant le / mais surtout il faut mettre la règle avec le / en tout premier dans ton .htaccess car le .* de la première règle matche toutes les URL du site, y compris celle avec un /.

    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
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Novembre 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Novembre 2011
    Messages : 9
    Points : 12
    Points
    12
    Par défaut
    Merci pour ta réponse Mac.
    Effectivement ça parait évident de mettre la deuxième règle en premier.

    Par contre ça ne marche toujours pas.
    Quand je rentre l'url http://www.mon-site.fr/accueil/presentation
    et que je fait un echo des variables "c" et "var"
    j'ai "c = index.php" (ça aurait dû me mettre "accueil") et "var" n'existe tout simplement pas.

    De plus mes fichiers images, css, js etc... ne sont plus détecter. Voici un exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Resource interpreted as Image but transferred with MIME type text/html: "http://localhost/mon-site/accueil/template/images/logo.png".
    On vois que le parametre accueil s'est glissé dans l'url.

    D'où cela peut-il venir?

    Voici mon fichier .htaccess :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    RewriteEngine On
     
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
     
    RewriteRule (.*)/(.*) index.php?c=$1&var=$2 [L]
    RewriteRule (.*) index.php?c=$1 [L]
    ps : Et du coup la redirection avec la règle "RewriteRule (.*) index.php?c=$1 [L]" ne marche plus.

  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 nano855 Voir le message
    Quand je rentre l'url http://www.mon-site.fr/accueil/presentation
    et que je fait un echo des variables "c" et "var"
    j'ai "c = index.php" (ça aurait dû me mettre "accueil") et "var" n'existe tout simplement pas.

    De plus mes fichiers images, css, js etc... ne sont plus détecter.
    C'est logique, toujours à cause du .* qui matche tout. Il faut tout simplement dupliquer avant tes RewriteRule les conditions pour n'activer la réécriture que si le fichier demandé n'existe pas. Les RewriteCond ne sont pas factorisables :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    RewriteEngine On
     
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule (.*)/(.*) index.php?c=$1&var=$2 [L]
     
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule (.*) index.php?c=$1 [L]

    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
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Novembre 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Novembre 2011
    Messages : 9
    Points : 12
    Points
    12
    Par défaut
    Merci mac
    Ca marche super

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

Discussions similaires

  1. URL rewriting avec paramètres optionnels
    Par JayZon12 dans le forum Apache
    Réponses: 2
    Dernier message: 18/11/2014, 18h00
  2. url rewriting avec plusieur .htaccess
    Par peckhouse dans le forum Langages de programmation
    Réponses: 0
    Dernier message: 27/10/2009, 11h20
  3. [Struts 1.1][html:link] avec plusieurs paramètres
    Par bbo1991 dans le forum Struts 1
    Réponses: 3
    Dernier message: 21/03/2007, 13h32
  4. [URLRewriting] URL Rewrite avec Language
    Par Prosis dans le forum Apache
    Réponses: 15
    Dernier message: 28/02/2007, 20h28
  5. [Struts] Html:link avec plusieurs paramètres
    Par mariemor64 dans le forum Struts 1
    Réponses: 2
    Dernier message: 24/05/2006, 15h27

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