3 votes

Rediriger le domaine vers le second en préservant le préfixe du sous-domaine

Je travaille avec HAProxy et je veux pouvoir rediriger tout le trafic du domaineA vers un deuxième domaineB en préservant le préfixe/le sous-domaine.

J'ai essayé des choses comme :

redirect prefix http://www.domainA.com code 301 if { hdr(host) -i http://www.domainB.com }

qui fonctionne mais je peux avoir plusieurs autres domaines, chacun ayant des sous-domaines.

Je veux pouvoir faire quelque chose comme

redirect prefix http://*.domainA.com code 301 if { hdr(host) -i http://*.domainB.com }
redirect prefix http://*.domainA.com code 301 if { hdr(host) -i http://*.domainC.org }

Les domaines B & C sont effectivement des alias pour le domaineA dans ce cas.

Existe-t-il un moyen de faire cela afin que je n'aie besoin que d'une seule entrée par domaine d'alias ?

Pour augmenter encore la complexité, je voudrais idéalement ignorer le protocole de la demande entrante (http/https) et rediriger vers https

Pour cet exemple, je chercherais à faire quelque chose comme

redirect prefix http://*.domainA.com code 301 if { hdr(host) -i (http|https)://*.domainB.com }
redirect prefix http://*.domainA.com code 301 if { hdr(host) -i (http|https)://*.domainC.org }

3voto

Josh Points 153

J'ai posté une solution pour cela dans un fil de discussion différent (Utiliser haproxy pour rediriger .domain1.com/ vers .domain2.com/ ).

acl domain_redirect hdr_end(host) -i domain1.com
http-request set-var(req.new_host) req.hdr(host),regsub(domain1\.com$,domain2.com,i) if domain_redirect
http-request redirect prefix https://%[var(req.new_host)] code 301 if { var(req.new_host) -m found }

Comme je l'ai mentionné, cette solution présente au moins un inconvénient, car elle semble supprimer les ancres de l'URL. Par exemple :

domain1.com?foo=bar#ze-anchor -> domain2.com?foo=bar

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X