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 ?
Vois d'abord si HTTP_HOST ne contiendrait pas le nom du serveur appelé côté client.
Bon courage.
[^]Re: HTTP_HOST ?
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 ?
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 ?
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