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 [problème de débutant]


Sujet :

Apache

  1. #1
    Nouveau membre du Club
    Inscrit en
    novembre 2009
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : novembre 2009
    Messages : 17
    Points : 27
    Points
    27
    Par défaut URL Rewriting [problème de débutant]
    Bonjour,

    J'ai un petit souci concernant l'URL Rewriting. Je viens de lire le tuto de Guillaume Rossolini (très bon tuto, merci à lui) et cependant je reste bloqué sur un truc certainement tout bête mais que je ne comprend pas.

    J'ai donc un petit site en 2 langues.

    En haut de ma page index.php j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    session_start();
     
    if (isset($_GET['lang'])){	
    	$_SESSION['LANG']=$_GET['lang'];	
    }
    J'ai également plusieurs modules donc, toujours dans ma page index.php j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (isset($_GET['module'])){
    	include $_GET['module'].'.php';
    }
    C'est pas sécurisé mais c'est juste pour l'exemple. Donc tout ça marche très bien c'est cool.
    Maintenant je voudrais faire du rewriting. Donc j'ai fais un htaccess qui est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Options +FollowSymlinks
    RewriteEngine on
    RewriteRule ^([a-z]+)-page.* index.php?module=$1 [QSA,L]
    RewriteRule ^([a-z]+)-page-fr.* index.php?module=$1&lang=FR [QSA,L]
    RewriteRule ^([a-z]+)-page-uk.* index.php?module=$1&lang=UK [QSA,L]
    Le problème c'est que concernant le module, y a pas de souci, en tapant une adresse genre "about-page" il comprend qu'il faut aller sur

    "index.php?module=about" seulement si je tape "about-page-fr" il va bien sur "index.php?module=about" mais il s'occupe pas du tout de ma

    variable lang. Lorsque j'essaie de la récupérer il me dit qu'elle existe pas.

    Est-ce que quelqu'un peu éclairer ma lanterne ?

    Merci d'avance aux bonnes âmes charitables.

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    novembre 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : novembre 2009
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Pourquoi tu mets une asterisque à la fin de ton expression ?
    c'est pas "$" plutôt ?

    Pourquoi tu fais pas ca plutôt ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^([a-z]+)-page-([a-z]+)$ index.php?module=$1&lang=$2 [QSA,L]
    Et après tu traites ton paramètre lang avec php.
    Ca te fait plus que 1 ligne et si jamais tu rajoutes des langues tu as juste à modifier ton php.

  3. #3
    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 751
    Points
    12 751
    Par défaut
    Il faut simplement que tu mettes ta première règle, plus générique et valable pour les patterns des autres règles, en dernier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Options +FollowSymlinks
    RewriteEngine on
    RewriteRule ^([a-z]+)-page-fr.* index.php?module=$1&lang=FR [QSA,L]
    RewriteRule ^([a-z]+)-page-uk.* index.php?module=$1&lang=UK [QSA,L]
    RewriteRule ^([a-z]+)-page.* index.php?module=$1 [QSA,L]
    Il faut toujours écrire les règles spécifiques en premier et les plus génériques en dernier, et dans ton cas, le fait d'avoir page.* fait que c'est plus générique et que ça matche aussi les URL page-fr et page-uk.

    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

  4. #4
    Nouveau membre du Club
    Inscrit en
    novembre 2009
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : novembre 2009
    Messages : 17
    Points : 27
    Points
    27
    Par défaut
    Ha ok, j'avais bien lu un truc sur l'ordre mais j'ai mal suivi. Merci beaucoup Mac, ça marche parfaitement bien désormais. Jetrokz merci aussi d'avoir répondu, le * sert pour dire qu'on peu mettre .nimportequoi derrière mais effectivement je vais peut-être faire un .html$ pour faire plus propre. Merci en tout cas !

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 04/08/2010, 12h36
  2. Réponses: 3
    Dernier message: 31/07/2007, 17h40
  3. [URL Rewriting] problème avec sous domaine
    Par Booyakha dans le forum Apache
    Réponses: 1
    Dernier message: 31/07/2007, 17h31
  4. URL Rewriting problème de regexp ?
    Par pierrickg dans le forum Apache
    Réponses: 2
    Dernier message: 10/07/2007, 14h35
  5. [URL Rewriting] Problème URL Rewriting -> CSS
    Par Cartman.inc dans le forum Apache
    Réponses: 8
    Dernier message: 23/04/2007, 15h29

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