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 :

Variable d'environnement avec Apache


Sujet :

Apache

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti Avatar de snake plissken
    Inscrit en
    Août 2004
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 13
    Par défaut Variable d'environnement avec Apache
    Bonjour,

    J'ai un souci pour récupérer la valeur d'une variable d'environnement sous Apache.

    A la base je pars de cette url: index.php?param1=1&lang=fr
    Cette page contient un lien <a href="toto.php">toto</a>.

    Je voudrais donc qu'en fonction de la valeur de lang, qd je clique sur toto on soit redirigé vers la page yahoo correspondant à la langue.
    ex : yahoo.fr, yahoo.it ...

    La contrainte est de le faire via Apache et j'ai pensé au code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    RewriteCond %{QUERY_STRING} lang=fr
    RewriteRule ^(.*)$ - [E=LOCALE:fr]
     
    RewriteCond %{REQUEST_URI} ^/toto.php$
    RewriteRule ^(.*)$ http://yahoo.%{ENV:LOCALE} [L,R=301]
    Le pb de ce code est qu'il me redirige non pas vers yahoo.fr mais vers yahoo./ car il n'arrive pas à retrouver la valeur de %{ENV:LOCALE}.

    A votre avis d'où cela peut venir ?

  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
    Par défaut
    Ca vient du fait qu'Apache n'a jamais pu récupérer la valeur de lang et s'en souvenir. Voici comment ça se passe :
    1. L'utilisateur demande ...&lang=fr
    2. Apache définit la variable d'environnement pour la requête en cours uniquement
    3. Apache appelle la page et renvoie le résultat au navigateur
    4. A ce moment-là, Apache oublie la variable d'environnement : la requête est finie
    5. L'utilisateur appelle toto.php
    6. Apache ne définit pas de variable d'environnement : pas de paramètre lang dans l'URL !
    7. Redirection vers yahoo./

    Pour t'en sortir, tu peux utiliser les cookies : quand Apache voit la variable lang dans l'URL, il force un cookie sur le navigateur, comme ça, au prochain appel, il peut récupérer le cookie et l'utiliser pour la redirection. L'autre solution consisterait à aller regarder la valeur de l'en-tête "Referer" (= l'URL de la page qui contient le lien qui a mené à la requête en cours => ...&lang=fr par exemple) pour trouver le paramètre lang mais cet en-tête n'est pas fiable : certains navigateurs ou proxy ne l'envoient pas, donc tu n'as pas de garantie que tu trouveras lang systématiquement. En outre, avec ce procédé il faut nécessairement que l'utilisateur clique sur le lien toto depuis cette page ...&lang=fr : s'il y a une page entre les deux sans paramètre lang=fr, Apache ne trouvera pas lang dans le referrer et ne pourra rien faire.

  3. #3
    Membre averti Avatar de snake plissken
    Inscrit en
    Août 2004
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 13
    Par défaut
    Salut Mac,

    C'est bien ce que je redoutais...je vais essayer tes solutions, merci.

Discussions similaires

  1. Réponses: 1
    Dernier message: 10/02/2015, 01h30
  2. Empêcher une modification de variable d'environnement avec CommonDialog
    Par megamario dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 18/11/2010, 08h50
  3. Variable d'environnement avec JBoss et Eclipse
    Par ventresh dans le forum Eclipse Java
    Réponses: 0
    Dernier message: 28/10/2009, 17h57
  4. [DEV] variables d'environnement avec mac?
    Par olivier57b dans le forum Apple
    Réponses: 3
    Dernier message: 12/12/2008, 11h29
  5. Variables d'environnement pour le processus apache
    Par EpOnYmE187 dans le forum Applications et environnements graphiques
    Réponses: 2
    Dernier message: 22/07/2005, 09h02

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