Forum Discussion
Ben_Conrad_8684
Nimbostratus
Nov 03, 2009iRule Help/HTTP:respond assistance
Hello,
I was wondering if someone could give me a hand with an iRule. I am trying to redirect all test.website.com traffic to test.website2.com EXCEPT traffic going to test.website.com/Three (I don't want traffic going to test.website2.com/Three). Can anyone tell me what I am doing wrong? I have attached my iRule as a reference.
when HTTP_REQUEST {
if { [HTTP::host] equals "test.website.com"} {
HTTP::respond 301 Location http://test.website2.com[HTTP::uri]
}
elseif { [HTTP::host] equals "test.website.com" and [HTTP::uri] equals "/One/Two/" } {
HTTP::respond 301 Location http://test.website2.com/One/Two
}
elseif { [HTTP::host] equals "test.website.com" and [HTTP::uri] equals "/Three/" } {
HTTP::respond 301 Location http://test.website.com/Three
}
Thanks in advance
- hoolio
Cirrostratus
Hi Ben,when HTTP_REQUEST { log local0. "[IP::client_addr]:[TCP::client_port]: New [HTTP::method] request to [HTTP::host][HTTP::uri]" Check requested host header value if {[string tolower [HTTP::host]] eq "test.website.com"} { log local0. "[IP::client_addr]:[TCP::client_port]: Matched Host check. Checking URI now." Check the requested URI switch -glob [HTTP::uri] { "/Three*" { Requested URI started with /Three log local0. "[IP::client_addr]:[TCP::client_port]: Matched URI check for /Three. Allowing request to go to pool" } default { HTTP::respond 301 Location "http://test.website2.com[HTTP::uri]" log local0. "[IP::client_addr]:[TCP::client_port]: No URI match. Redirecting to http://test.website2.com[HTTP::uri]" } } } }
- Ben_Conrad_8684
Nimbostratus
Thanks you sir! I will try it out and see if it works. I will post back my results. - Ben_Conrad_8684
Nimbostratus
It worked and I got sign-off, so thanks for that Hoolio. In this section here: - Ben_Conrad_8684
Nimbostratus
I think I found the answer: - hoolio
Cirrostratus
Sure, for switch cases that you want to take the same action for, you can add them using -switch -glob $some_string { "1" - "2" - "3" { Matched 1, 2 or 3 } "[4-6]" { Matched 4, 5 or 6 } "[d-f]" { Matched d, e or f } "z*" { Matched anything starting with z } "*z" { Matched anything ending with z } default { No match. Default case } }
when HTTP_REQUEST { log local0. "[IP::client_addr]:[TCP::client_port]: New [HTTP::method] request to [HTTP::host][HTTP::uri]" Check requested host header value if {[string tolower [HTTP::host]] eq "test.website.com"} { log local0. "[IP::client_addr]:[TCP::client_port]: Matched Host check. Checking URI now." Check the requested URI switch -glob [HTTP::uri] { "/Three*" - "/Four*" { Requested URI started with /Three or /Four log local0. "[IP::client_addr]:[TCP::client_port]: Matched URI check for /Three or /Four. Allowing request to go to pool" } default { HTTP::respond 301 Location "http://test.website2.com[HTTP::uri]" log local0. "[IP::client_addr]:[TCP::client_port]: No URI match. Redirecting to http://test.website2.com[HTTP::uri]" } } } }
- Ben_Conrad_8684
Nimbostratus
Thanks again. This was a huge help.
Recent Discussions
Related Content
DevCentral Quicklinks
* 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
Discover DevCentral Connects