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 :

Redirection conditionnelle (selon la variable)


Sujet :

Apache

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 76
    Points : 49
    Points
    49
    Par défaut Redirection conditionnelle (selon la variable)
    Bonjour,

    Je viens à vous car j'ai un problème de taille ! J'ai eu beau chercher sur le net je n'ai rien trouvé...

    Ma situation :
    J'ai de l'url-rewriting à faire sur une url qui peut comporter 2 types de variables :
    1 - www.monsite.com/paris
    2 - www.monsite.com/ile-de-france

    Ma première url doit rediriger vers www.monsite.com/ville.php?id=paris
    Ma seconde url doit rediriger vers www.monsite.com/region.php?id=ile-de-france

    Ma solution :
    Intégrer en dur dans le htaccess toutes les régions (ou villes), par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    RewriteRule ^ile-de-france$   region.php?id=ile-de-france [L]
    RewriteRule ^paca$   region.php?id=paca [L]
    RewriteRule ^paris$   ville.php?id=paris [L]
    RewriteRule ^bordeaux$   ville.php?id=bordeaux[L]
    etc...
    Mais mon but est que ce soit automatiser et non en dur.

    Mon problème :
    Comment dire au htaccess vers quelle page pointer selon la variable qu'il y a en GET ?
    Si je fais :
    1 - www.monsite.com/ville/paris
    2 - www.monsite.com/region/ile-de-france

    Alors je n'ai aucun problème, mais ce que je veux c'est supprimer la première variable (ville et région).

    J'espère avoir été clair...
    Merci d'avance pour votre aide
    Besoin d'un artisan ? Trouvez votre bonheur ici : http://www.touslesartisans.com

  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
    En ne mettant en œuvre qu'un .htaccess tu n'as pas d'autre solution que celle que tu as déjà utilisée : mettre une ligne par URL.

    Si tu veux un système plus flexible, il faut en fait passer par une page PHP intermédiaire faisant office de routeur. Cette page fait le calcul qui va bien (par une requête en base de données par exemple) pour savoir s'il faut appeler (include) ville.php ou region.php. Dans ce cas, le .htaccess ressemble à ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule (.*) routeur.php?id=$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

Discussions similaires

  1. Réponses: 3
    Dernier message: 07/07/2010, 14h30
  2. Réponses: 3
    Dernier message: 12/03/2010, 17h55
  3. JTree, icone d'un noeud selon une variable
    Par remayy dans le forum Composants
    Réponses: 3
    Dernier message: 17/10/2006, 09h26
  4. Conditionnel selon comparaison
    Par syldudu dans le forum Access
    Réponses: 3
    Dernier message: 19/09/2006, 11h28
  5. [POO] Déclaration de classe selon une variable
    Par Michaël dans le forum Langage
    Réponses: 1
    Dernier message: 07/01/2006, 18h33

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