Forum Discussion
irule - converting if to switch
I am trying to convert my irule from using the if to the switch. Here' s an email of my old irule.
when HTTP_REQUEST {
if { (([HTTP::host] contains "abc1.com") && ([HTTP::uri] == "/" )) }{
HTTP::uri "/tf/myPLAN/SponsorWelcome?cz=123456789"
}
elseif { (([HTTP::host] contains "abc2.com") && ([HTTP::uri] == "/" )) }{
HTTP::uri "/tf/myPLAN/SponsorWelcome?cz=223456789"
}
elseif { [string tolower [HTTP::host]] eq "example1.com" } {
HTTP::respond 301 Location "https://example11.com"
}
elseif { [string tolower [HTTP::host]] eq "example2.com" } {
HTTP::respond 301 Location "https://example22.com"
}
Hello.
Try this:
when HTTP_REQUEST { switch -glob [string tolower [HTTP::host]] { "*abc1.com" { if { [HTTP::uri] eq "/" } { HTTP::uri "/tf/myPLAN/SponsorWelcome?cz=123456789" } } "*abc2.com" { if { [HTTP::uri] eq "/" } { HTTP::uri "/tf/myPLAN/SponsorWelcome?cz=223456789" } } "*example1.com" { HTTP::respond 301 Location "https://example11.com" } "*example2.com" { HTTP::respond 301 Location "https://example22.com" } } }
KR,
Dario.
Hello.
Try this:
when HTTP_REQUEST { switch -glob [string tolower [HTTP::host]] { "*abc1.com" { if { [HTTP::uri] eq "/" } { HTTP::uri "/tf/myPLAN/SponsorWelcome?cz=123456789" } } "*abc2.com" { if { [HTTP::uri] eq "/" } { HTTP::uri "/tf/myPLAN/SponsorWelcome?cz=223456789" } } "*example1.com" { HTTP::respond 301 Location "https://example11.com" } "*example2.com" { HTTP::respond 301 Location "https://example22.com" } } }
KR,
Dario.
- cwdushekeNimbostratus
Thank you very much. I was looking through a lot of examples but not sure how to do it.
You're welcome :-)
Please, don't forget to mark the answer as "the best" if it was helpful.
Recent Discussions
Related Content
* Getting Started on DevCentral
* Community Guidelines
* Community Terms of Use / EULA
* Community Ranking Explained
* Community Resources
* Contact the DevCentral Team
* Update MFA on account.f5.com