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 :

HTTP_FORWARDED et .htaccess


Sujet :

Apache

  1. #1
    Candidat au Club
    Inscrit en
    Août 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 6
    Points : 3
    Points
    3
    Par défaut HTTP_FORWARDED et .htaccess
    Bonjour à tous,

    J'ai developpé un site php declinable en x versions différentes suivant le nom de domaine sous apache.

    ex :
    www.monsite1.com
    www.monsite2.com
    ...
    www.monsiteX.com

    Ces noms domaine pointent sur le même repertoire, je set variables php en fonction.

    Coté php tout est ok, j'ai accès correctement aux variables d'environnement qu'il me faut ( HTTP_X_FORWARD_HOST ).

    Je souhaite mettre aussi en place les réécritures d'url appropriées à l'aide du .htaccess en utilisant des RewriteCond sur le nom de domaine.

    Malheureusement, je n'arrive pas à lire le HTTP_X_FORWARD_HOST depuis le .htaccess, donc impossible pour moi de mettre en place les bonnes réécritures...

    ex :

    RewriteCond %{ENV:HTTP_X_FORWARD_HOST} ^monsite1.com >> non OK
    RewriteCond %{ENV:HTTP_X_FORWARD_HOST} ^www.monsite1.com >> non OK
    RewriteCond %{HTTP_FORWARD} ^(www.)monsite1.com >> non ok

    etc...

    j'ai accès par contre au %{HOST_NAME} qui est le même pour tous les sites.

    Quelqun a-t-il déjà rencontré ce problème ?
    Faut-il rajouter une directive dans le .htaccess pour prendre en compte ces paramètres?

    Je tiens à préciser que je n'ai pas la main sur les serveurs et je ne m'occupe pas des problematiques d'hébergement.

    Merci !!

    Maxame

  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
    Je comprends pas : HTTP_X_FORWARD_HOST n'existe que si on passe par un proxy. Y en a un dans ton archi ?

    As-tu essayé HTTP_HOST à la place (%{HTTP_HOST}) ? C'est logiquement cet en-tête qui indique le nom du serveur demandé.

  3. #3
    Candidat au Club
    Inscrit en
    Août 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Ce n'est pas moi qui ai mis en place l'archi serveur mais j'utilise HTTP_X_FORWARD_HOST dans mon code php pour repérer le bon domaine et il semblerait que c'est le même pour le .htaccess.

    le HTTP_HOST est identique pour tous les sites.

    www.monsite1.com >> www.monhost.com
    www.monsite2.com >> www.monhost.com
    www.monsite3.com >> www.monhost.com

    je ne peux donc pas me référer à cette variable pour faire mes réécritures.

  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
    C'est pas normal. J'imagine qu'en frontal il y a un Apache avec mod_proxy. Dans ce cas, il faut mettre ProxyPreserveHost On dans la conf du reverse proxy. L'inconvénient de passer par HTTP_X_FORWARD_HOST c'est que si ton archi change et qu'il n'y a plus de reverse proxy ou que ce reverse proxy change et qu'il ne définit plus cet en-tête HTTP, tes scripts ne marcheront plus.

    Mais bref, là n'est pas le besoin, n'est-ce pas ? Pour utiliser HTTP_X_FORWARD_HOST dans un .htaccess, tu ne peux pas passer par %{ENV:HTTP_X_FORWARD_HOST} car HTTP_X_FORWARD_HOST n'est pas une variable d'environnement mais un en-tête HTTP reçu par le serveur. Il faut donc que tu utilises la syntaxe suivante : %{HTTP:HTTP_X_FORWARD_HOST}.

  5. #5
    Candidat au Club
    Inscrit en
    Août 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Merci beaucoup _Mac_ pour ton aide,

    J'ai essayé avec %{HTTP:HTTP_X_FORWARD_HOST} mais le résultat est le même... il ne rentre pas dans la condition.

    Y'a t-il moyen de printer quelque part toutes ces variables pour vérifier leur contenu ?

    Merci,

    Maxame

  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
    Tu peux essayer d'activer les logs de mod_rewrite. Sinon, ce que je fais souvent c'est une redirection bidon vers un phpinfo du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteCond %{REQUEST_URI} !phpinfo.php
    RewriteRule .* /phpinfo.php?%{HTTP:HTTP_X_FORWARD_HOST}

  7. #7
    Candidat au Club
    Inscrit en
    Août 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Merci pour cette astuce.

    Toutes les variables ressemblant de près ou de loin à HTTP_X_FORWARDED_HOST sont vides...

    un lien avec "ProxyPreserveHost On" ?

  8. #8
    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
    Aucune idée. Il faut tracer les en-têtes de la requête HTTP entrante pour savoir. Sinon, essaie de regarder avec un phpinfo s'il y a un autre en-tête

  9. #9
    Candidat au Club
    Inscrit en
    Août 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    J'ai trouvé!!

    c'est %{HTTP:X-Forwarded-Host}.

    Merci pour tout.

    Cordialement, Maxame

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

Discussions similaires

  1. [apache][htaccess]Problème de pages sécurisées
    Par Mel68 dans le forum Apache
    Réponses: 5
    Dernier message: 09/06/2004, 12h53
  2. .htaccess et servlets
    Par rohstev dans le forum Apache
    Réponses: 3
    Dernier message: 06/05/2004, 19h06
  3. [servlet] et .htaccess
    Par rohstev dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 06/05/2004, 19h05
  4. Protection d'un répertoire avec .htaccess
    Par Bweb dans le forum Apache
    Réponses: 2
    Dernier message: 04/05/2004, 19h12
  5. [Apache et RedHat] Problème avec les .htaccess
    Par Selpoivre dans le forum Apache
    Réponses: 15
    Dernier message: 01/04/2004, 15h24

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