/abc (and whatever parameters after /abc) is being redirected to /xyz
when HTTP_REQUEST { if { [HTTP::host] contains “example.com” }{ elseif { [HTTP::uri] starts_with “/abc” } { HTTP::redirect /xyz }
My new requirement is:
If the uri is /abc (and whatever parameters after /abc, eg: /abc?=un), it should redirct to /xyz
If the uri is /abc-def (and whatever parameters after /abc-def, eg: /abc-def?=un, it should stay on same URI /abc-def
Could you please let me know how this can be acheived? Thanks
I think you need to use (not starts_with) operator for your logic.
In the below code sample, if the request equals to “abc” or not starts with “abc-def”, it will be redirected to /xyz.
Therefore,
"If the uri is /abc (and whatever parameters after /abc, eg: /abc?=un), it should redirct to /xyz If the uri is /abc-def (and whatever parameters after /abc-def, eg: /abc-def?=un, it should stay on same URI /abc-def"
/abc will be redirected to /xyz
/abc?=un will be redirected to /xyz (because it is not starts with “abc-def”
/abc-def will stay on same because it will not going into second if statement.
when HTTP_REQUEST {
if {[HTTP::host] eq "www.example.com"}{
if{(([HTTP::uri] eq "abc") or !([HTTP::uri] starts_with "abc-def")) }{
HTTP::redirect "www.example.com/xyz"
}
}
}