Forum Discussion
multiple urls to single url
I want to redirect users to a single url (http://a.b.com/a/error.htm) if they came from (http://a.b.com/a/a.aspx?a=1 or http://a.b.com/a/h.aspx?a=f or http://a.b.com/b/4.aspx?a=3)
any help will be great. thank you,
8 Replies
- Lee_Payne_53457
Cirrostratus
I would use a switch statement based on the variable you're passing in, like this:
switch [URI::query [HTTP::uri] "a"] { 1 { HTTP::redirect http://a.b.com/a/error.htm } f { HTTP::redirect http://a.b.com/a/error.htm } 3 { HTTP::redirect http://a.b.com/a/error.htm } }
mainly for the flexibility of redirecting elsewhere in future, but you could use an if statement containing all options, a datagroup containing all elements you want to redirect on and I'm sure a few other options.
- ervinc_27883
Nimbostratus
I'm new to the irule game, how would you code this? will this work? when HTTP_REQUEST { switch [URI::query [HTTP::uri] = "http://a.b.com/a/a.aspx?a=1" or http://a.b.com/h/h.aspx?g=5 or http://a.b.com/h/h.aspx?g=10 or http://a.b.com/f/u.aspx?g=8 ] { HTTP::redirect http://a.b.com/a/error.htm } }
- ervinc_27883
Nimbostratus
Getting an error when I put this irule: when HTTP_REQUEST { if { ([HTTP::host] equals "a.b.org") and ([HTTP::uri] equals MessageWebSite/Messages.aspx?contractID=986") or ([HTTP::uri] equals MessageWebSite/MessageBoardLogin.aspx?contractID=986") or ([HTTP::uri] equals MessageWebSite/Messages.aspx?contractID=1014") or ([HTTP::uri] equals MessageWebSite/MessageBoardLogin.aspx?contractID=1014") or ([HTTP::uri] equals MessageWebSite/Messages.aspx?contractID=1017") or ([HTTP::uri] equals MessageWebSite/MessageBoardLogin.aspx?contractID=1017") or ([HTTP::uri] equals MessageWebSite/Messages.aspx?contractID=1015") or ([HTTP::uri] equals MessageWebSite/MessageBoardLogin.aspx?contractID=1015") or ([HTTP::uri] equals MessageWebSite/Messages.aspx?contractID=1016") or ([HTTP::uri] equals MessageWebSite/MessageBoardLogin.aspx?contractID=1016") or ([HTTP::uri] equals MessageWebSite/Messages.aspx?contractID=1018") or ([HTTP::uri] equals MessageWebSite/MessageBoardLogin.aspx?contractID=1018") or ([HTTP::uri] equals MessageWebSite/Messages.aspx?contractID=1013") or ([HTTP::uri] equals MessageWebSite/MessageBoardLogin.aspx?contractID=1013") } { HTTP::redirect "https://[HTTP::host][HTTP::uri]" } }
- ervinc_27883
Nimbostratus
This also give me error
when HTTP_REQUEST { if { ([HTTP::host] equals "a.b.org") and (([HTTP::uri] equals "MessageWebSite/Messages.aspx?contractID=986") or (HTTP::uri] equals "MessageWebSite/MessageBoardLogin.aspx?contractID=986") or ([HTTP::uri] equals "MessageWebSite/Messages.aspx?contractID=1014") or ([HTTP::uri] equals "MessageWebSite/MessageBoardLogin.aspx?contractID=1014") or ([HTTP::uri] equals "MessageWebSite/Messages.aspx?contractID=1017") or ([HTTP::uri] equals "MessageWebSite/MessageBoardLogin.aspx?contractID=1017") or ([HTTP::uri] equals "MessageWebSite/Messages.aspx?contractID=1015") or ([HTTP::uri] equals "MessageWebSite/MessageBoardLogin.aspx?contractID=1015") or ([HTTP::uri] equals "MessageWebSite/Messages.aspx?contractID=1016") or ([HTTP::uri] equals "MessageWebSite/MessageBoardLogin.aspx?contractID=1016") or ([HTTP::uri] equals "MessageWebSite/Messages.aspx?contractID=1018") or ([HTTP::uri] equals "MessageWebSite/MessageBoardLogin.aspx?contractID=1018") or ([HTTP::uri] equals "MessageWebSite/Messages.aspx?contractID=1013") or ([HTTP::uri] equals "MessageWebSite/MessageBoardLogin.aspx?contractID=1013") }} { HTTP::redirect "http://a.b.org/abc/eror.html" } }
- shaggy
Nimbostratus
HTTP::uri will match the entire uri (path + query). Try:
when HTTP_REQUEST { if { [string tolower [HTTP::uri]] equals "/a/a.aspx?a=1" or [string tolower [HTTP::uri]] equals "/a/h.aspx?a=f" or [string tolower [HTTP::uri]] equals "/b/4.aspx?a=3" }{ HTTP::redirect http://a.b.com/a/error.htm } } - ervinc_27883
Nimbostratus
I tried this and the redirect is still not working.
when HTTP_REQUEST { if { [string tolower [HTTP::uri]] equals "/MessageWebSite/Messages.aspx?contractID=986" or [string tolower [HTTP::uri]] equals "/MessageWebSite/Messages.aspx?contractID=1014" or [string tolower [HTTP::uri]] equals "/MessageWebSite/Messages.aspx?contractID=1017" or [string tolower [HTTP::uri]] equals "/MessageWebSite/Messages.aspx?contractID=1015" or [string tolower [HTTP::uri]] equals "/MessageWebSite/Messages.aspx?contractID=1016" or [string tolower [HTTP::uri]] equals "/MessageWebSite/Messages.aspx?contractID=1018" or [string tolower [HTTP::uri]] equals "/MessageWebSite/Messages.aspx?contractID=1013" } { HTTP::redirect "http://apps.mwrd.org/MessageWebSite/Questions_Unavailable.htm" } }
- shaggy
Nimbostratus
you need to make all of your URLs lower-case in the iRule - ervinc_27883
Nimbostratus
thank you. that did it.
Help guide the future of your DevCentral Community!
What tools do you use to collaborate? (1min - anonymous)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