Szenario: Wenn URL http://domain
oder http://domain/web
ist, dann sollte es keine Umleitung geben. Für alles andere, sagen wir http://domain/abc
oder http://domain/xyz
, sollte es eine Umleitung zu http://domain2
geben.HAProxy Routing basierend auf URL
Dies ist, was ich versucht habe und es funktioniert nur für http://domain/web
. Wenn die URL http://domain
lautet, wird sie immer noch an http://domain2
weitergeleitet.
acl is_root path -i
acl missing_slash path_reg ^/*/[^/]*$$
acl isweb path_beg /web
http-request set-header X-Location-Path %[capture.req.uri] if !isweb !is_root !missing_slash
http-request replace-header X-Location-Path [^/]+/(.*) \1 if !isweb !is_root !missing_slash
http-request redirect code 301 location https://www.domain2.com%[hdr(X-Location-Path)] if !isweb !is_root !missing_slash
Leider immer noch das gleiche Ergebnis nach dieser Änderung –
Ihr 'missing_slash' Test scheint ungültig zu sein. Ich bin mir nicht sicher, was Sie damit anfangen wollen, aber '*' in einer Regex bedeutet "null oder mehr Vorkommen", also scheint dies mit '/' übereinzustimmen, wodurch verhindert wird, dass die andere Regel wirksam wird. Sie haben vielleicht 'path_reg [^ /] $' gemeint - Pfad endet nicht mit einem Schrägstrich - oder 'path_reg^/. +/[^ /] + $'. Bitte erklären Sie, mit welchem Muster dieses Muster übereinstimmen soll. –
Meine Regex ist sehr schlecht. Das ist was ich herausfinden möchte ... wenn eine URL wie diese ist www.mydomain.com oder www.mydomain.com/web. Anders als bei diesen beiden Bedingungen erfolgt die Weiterleitung zu Domäne2. –