Redirection vers proxy : RewriteCond

  • Auteur de la discussion Auteur de la discussion aour
  • Date de début Date de début
Nouveau WRInaute
Bonjour,

Mon hébergeur me propose un ssl mutualisé.
Pour mon domaine : chezmoi.tld je passe part https: / /ssl.monhebergeur.tld/chezmoi.tld

Je voudrais rediriger toutes les requetes à mon domaine vers le ssl.

Le souci, c'est que le serveur renvoie pour les pages en ssl les mêmes infos que la page en http :

SERVER_NAME chezmoi.tld
SERVER_PORT 80

Je ne peux donc tester aucun des parametres par defaut de RewriteCond.

J'essaye de tester la seule chose qui change : HTTP_X_FORWARDED_HOST et HTTP_X_FORWARDED_SERVER qui est égale à ssl.monhebergeur.tld lorsque je suis en ssl uniquement

Je veux comme condition que si HTTP_X_FORWARDED_HOST est différent de ssl.monhebergeur.tld je redirige vers le ssl.

Code:
RewriteEngine on
RewriteCond %{ENV:HTTP_X_FORWARDED_HOST} !^ssl.monhebergeur.tld
RewriteRule . https://ssl.monhebergeur.tld/chezmoi.tld

Le souci c'est que je boucle que j'appelle mon domaine ou le ssl en direct.

Merci

Aour
 
WRInaute impliqué
Ben il suffit de lire un peu la doc apache sur le mod_rewrite mon chère :-)

RewriteCond %{HTTPS} (soit on soit off)

Salut

En plus le SSL/TLS ne devrait pas passer sur le port 80, mais 443
 
Nouveau WRInaute
Bonjour,

Je peux te dire que j'ai lu la doc à fond et même les post ici qui parlent du renvoie sur https.

Le souci comme je l'explique c'est que justement le serveur ne renvoie pas le port 443. Pour infos, Un proxy peut être paramêtré pour renvoyer une page ssl sur le port 80.

Voici les variables retournées par la page en SSL:

Code:
HTTP_X_FORWARDED_BY 	SSL Proxy
HTTP_X_FORWARDED_FOR 	##.###.###.###
HTTP_X_FORWARDED_HOST 	ssl.monhebergeur.tld
HTTP_X_FORWARDED_SERVER ssl.monhebergeur.tld

SERVER_NAME 	chezmoi.tld
SERVER_PORT 	80

la page en http ne renvoie pas les 4 premières lignes mais juste :

Code:
SERVER_NAME 	chezmoi.tld
SERVER_PORT 	80

Vu que le htaccess se sert de ces variables, le test sur https ne fonctionne pas pour différencier une page https d'une http.
Je voudrais en fait faire le test sur HTTP_X_FORWARDED_HOST avec la condition si HTTP_X_FORWARDED_HOST différent de ssl.monhebergeur.tld alors je redirige.

Merci correiaj

Aour
 
WRInaute impliqué
Alors ta seule solution reste le HTTP_HOST:

RewriteCond %{HTTP_HOST} ^https://.*$

car le proxy ok, il peut fonctionner sur le port 80, mais le browser lui nécesite le bon protocole, donc un https...
 
Nouveau WRInaute
Bonjour,

Merci correiaj de partager ma galère.

J'ai testé avec HTTP_HOST

RewriteCond %{HTTP_HOST} ^https://.*$ ---> ne marche pas
RewriteCond %{HTTP_HOST} ^https://mondomaine.*$ ---> ne marche pas
RewriteCond %{HTTP_HOST} ^mondomaine.*$ ---> redirige mais en boucle car la chaine mondomaine se trouve dans le site https et http.

HTTP_HOST ne renvoie pas la chaine complète mais il renvoie uniquement l'url sans le protocole.

Et mon souci c'est que HTTP_HOST de l'adresse https: / /ssl.monhebergeur.tld/chezmoi.tld ne renvoi pas ssl.monhebergeur.tld/chezmoi.tld mais chezmoi.tld :evil:

Aour
 
Nouveau WRInaute
Re

Bon, j'ai fait un test sur RewriteCond %{REMOTE_ADDR} car j'ai l'adresse IP du proxy de renseigné au lieu de la mienne.

Cela donne :

Code:
RewriteEngine on
RewriteCond %{REMOTE_ADDR} !^111\.222\.[0-9]+\.[0-9]+
RewriteRule ^(.*)$ https: / /ssl.monhebergeur.tld/chezmoi.tld/$1 [R]

en esperant que l'adresse du proxy change pas et que le client qui vient visiter la page ne osit pas dans le même plan d'adressage que le proxy.

Merci

Aour
 
WRInaute impliqué
Oui exacte, en fait la variable qui retourne le protocole est HTTP_REFERER, mais parle du référant, et pas de la page en question...
Sinon, il te faut faire un code en php pour ces pages, ou bien régler ce problème de port...
 
Discussions similaires
Haut