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] & dans le chemin des URL


Sujet :

Apache

  1. #1
    Expert éminent
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 146
    Points : 9 391
    Points
    9 391
    Par défaut [URL rewriting] & dans le chemin des URL
    Bonjour à toutes et à tous,

    je me mets tout doucement à la réécriture d'url en tentant de développer une appli MVC.

    Ma règle fonctionne bien pour ce que j'ai envie de faire, mais je me suis posé une question en raison d'un caractère venant foutre le brin dans mon dernier paramètre...

    Voici ma règle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^index.php/([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/?(.*?)$   index.php?controller=$1&action=$2&args=$3 [L]
    Je passe en premier le contrôleur, puis l'action et enfin tout ce qui traîne derrière je le considère comme étant des arguments.
    Cependant si je mets le caractère '&' dans les arguments PHP me le considère comme le séparateur de variable. Chose tout à fait attendue mais que j'aimerai contourner sans avoir à encoder mes urls.
    Auriez-vous une idée ? Est-ce possible ?

    J'aurai aussi une seconde demande, j'ai tenté de ne pas faire apparaître index.php afin d'avoir une url plus "propre" (question de goût je sais... ) cependant cela a été un échec total => 404
    Comment dois-je mettre ceci en oeuvre ?

  2. #2
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 915
    Points
    79 915
    Par défaut
    Bonjour,

    Je ne m'y connais pas mais il n'y a pas un caractère d'échappement pour éviter que PhP ne parse le caractère "&" ?

  3. #3
    Expert éminent
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 146
    Points : 9 391
    Points
    9 391
    Par défaut
    Il faudrait passer par les entities mais cela n'intervient pas dans la règle mais du côté de la construction de l'url.
    Chose que je ferrai s'il n'existe pas de solution avec une règle.

  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
    Tu peux tenter de travailler également sur la query string dans ta règle mais ce n'est pas la solution la plus propre : la solution la plus propre est d'utiliser les entités pour qu'Apache ne considère pas ce qui suit le premier & comme des paramètres d'URL (query string).

  5. #5
    Expert éminent
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 146
    Points : 9 391
    Points
    9 391
    Par défaut
    Ok donc pas de possibilité propre sans les entities.
    Merci de vos réponses.

    Une question de réglée donc.

    Concernant une règle ne faisant pas apparaître index.php est-ce possible ?
    Actuellement tous mes tests pointent sur du 404 ou bien bouclent sur le index.php

    Exemple de bouclage : domaine/index.php/controleur/action/controleur/action

  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
    Oui, ca doit être possible sans index.php puisque Wikipedia le fait. A tout hasard, ajoute ceci tout en haut du .htaccess :
    Et si ça ne change rien, peux-tu nous donner le .htaccess complet ?

  7. #7
    Expert éminent
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 146
    Points : 9 391
    Points
    9 391
    Par défaut
    Oui je vous donne ça ce soir si j'oublie pas.
    Sachant qu'il a malheureusement bien évolué car j'avais pas prévu le cas des ressources externes (css, js, images, ect) et que ça passait aussi dans ma règle...

Discussions similaires

  1. Réponses: 1
    Dernier message: 16/03/2013, 11h26
  2. Réponses: 1
    Dernier message: 04/02/2013, 15h59
  3. [URL rewriting] Supprimer la query string des URL
    Par khaled72 dans le forum Apache
    Réponses: 8
    Dernier message: 18/01/2012, 14h42
  4. Réponses: 3
    Dernier message: 14/01/2008, 12h24
  5. Réponses: 6
    Dernier message: 27/11/2007, 13h28

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