Faire un don ! | | style | statistiques | contactez-nous | plan | lettre d'information

general.general : Apache redirect derriere un proxy.

Posté par lom (page perso, ) le 14 avril 2008

hello,



J'ai un souci de redirection avec Apache, que je n'arrive pas a résoudre.



Le but est que toute requete vers example.com soit redirigée vers www.example.com.

Le problème est que example.com est derrière un proxy, Apache étant situé sur serveur.com. Je n'ai accès que a la conf du serveur, pas a celle du proxy.



Actuellement, www.example.com et example.com sont tous les deux redirigés vers serveur.com (port 8300) en interne. J'aimerai donc pouvoir faire la différence entre les deux pour demander une redirection si besoin.



ma conf actuelle est:



nameVirtualHost *:8300

< VirtualHost *:8300 >

ServerName www.example.com



RewriteEngine on

RewriteCond {SERVER_NAME} !www\.example\.com$ [NC]

RewriteRule ^/(.*) http://www.example.com/$1 [L,R=301]



[...]





Le souci est que dans SERVER_NAME je n'ai que serveur.com, pas example.com. Je n'ai pas trouvé d'autres variables qui contiennent example.com, pas plus que je n'ai réussi a tricher de façon différente (je pensais a SetEnvIf, puis comparer a cette variable ).



Quelqu'un aurait-il une idée géniale?

Merci pour toute piste

> Lire le message (9 commentaires, moyenne: 2,3).  

Vous avez demandé le commentaire #922808.

HTTP_HOST ?

Posté par Obsidian () le 14/04/2008 à 16:52. (lien). Évalué à 3.

Vois d'abord si HTTP_HOST ne contiendrait pas le nom du serveur appelé côté client.

Bon courage.

  • [^]Re: HTTP_HOST ?

    Posté par lom (page perso, ) le 14/04/2008 à 17:07. (lien). Évalué à 2.

    merci pour l'idee, mais j'avais deja tente, et ce n'est pas ca, alors que ca semblait le plus logique.

    Pour info Firefox "has detected that the server is redirecting the request for this address in a way that will never complete.", et les logs d'apache me disent:
    RewriteCond: input='' pattern='!www\.example\.com$' [NC] => matched
    Ce qui n'est donc pas bon, le input n'est pas ce qu'il devrait etre.

    • [^]Re: HTTP_HOST ?

      Posté par Obsidian () le 14/04/2008 à 18:57. (lien). Évalué à 3.

      Essaie de mettre un % devant ton bloc {SERVER_NAME} ou {HTTP_HOST}.

      Méfie-toi des inversions de conditions avec le point d'exclamation. Imagine un instant que tes <i>backslashes</i> ne soient pas considérés comme des caractères d'échappement. Cela suffirait à ce que <b>www.example.com</b> soit différent de <b>www\.example\.com</b> et, donc, que ta condition soit toujours remplie, ce qui te ferait entrer dans une boucle infinie, déclenchant le message d'erreur de Firefox.

      C'est pas forcément incorrect pour autant, mais assure-toi que Apache interprète bien ta règle comme tu l'entends. Moi, il a fallu que je bidouille un moment avant que mes règles à moi fonctionnent comme prévu.

      Ensuite, si vraiment tes variables d'environnement ne contiennent pas le nom du serveur appelé, c'est que ton proxy les filtre, voire fait la redirection de lui-même, et dans ce cas il n'y a pas de secret. S'il y a redirection, alors ton serveur Apache ne devrait même pas s'en préoccuper (travail fait en amont). Si c'est une <i>regexp</i> qui dispatche la requête au bon endroit, style <b>.*\.example\.com</b>, alors à défaut de pouvoir corriger la conf', il faut au moins que tu vérifies (ou fasse vérifier) si c'est bien le cas. Ca évitera d'avoir à suer pour rien et -surtout- que ta config' Apache provoque des effets de bord en cas de modification de celle du proxy.

      • [^]Re: HTTP_HOST ?

        Posté par lom (page perso, ) le 15/04/2008 à 10:33. (lien). Évalué à 2.

        Oups, c'est une erreur dans le forum, il y a bien sur un % devant les {VARIABLES}.

        Le proxy ne fait malheureusement pas la redirection lui meme, ce qui serait de loin le plus simple. Je vais essayer de voir ca...

        Merci