Forum Discussion
Feb 05, 2010
One Vs for Redirects
This should be an easy one..
I want to use one VS for a bunch of redirects, a catch all of sorts.. If for some reason this is a bad idea just let me know.
The redirect only work for the first entry, the rest fail..
when HTTP_REQUEST {
if { [HTTP::host] eq "www.firstdomain.com" } {
HTTP::redirect "http://my.firstdomain.com"
}
elseif { [HTTP::host] eq "www.seconddomain.com" } {
HTTP::redirect "http://my.seconddomain.com"
}
}
Much appreciated
43 Replies
- The_Bhattman
Nimbostratus
Hi iRuleYou, - Ahh Now I see what happened.. we started off with findclass and started using matchclass along the way and I should of read the syntax for matchclass..
- hoolio
Cirrostratus
Can you try something like this with a datagroup containing the original host header value, a space and then the host to redirect to on a single line?when HTTP_REQUEST { Log the request details log local0. "[IP::client_addr]:[TCP::client_port]: [HTTP::method] to [HTTP::host][HTTP::uri]" Check if the requested host is in the my_hosts_class datagroup The my_hosts_class should be a datagroup containing the host to match on and the host to redirect to separated by a space: host_orig_1 host_new_1 host_orig_2 host_new_2 set host [findclass [string tolower [HTTP::host]] $::my_hosts_class " "] Check if there was a match if {$host ne ""}{ log local0. "[IP::client_addr]:[TCP::client_port]: Matched $host" HTTP::redirect "http://$host[HTTP::uri]" } else { HTTP::respond 200 content " Sorry, no match " log local0. "[IP::client_addr]:[TCP::client_port]: No match" } }
- Sweet, working like a charm!
- hoolio
Cirrostratus
No problem. It's good that you're making sure you understand how the rule works. - hoolio
Cirrostratus
We'd discussed the efficiency of using string operators on strings in this post, and seen some mixed results: - Great thanks man!
- hoolio
Cirrostratus
Ask and ye shall receive: - Thanks man
- Justin_Adrian_3
Nimbostratus
Not sure if you are done with this, but I built this little irule to do a similar function. I wanted to avoid having to modify one massive data set. Thought that smaller data sets that could be added as needed would work better.Master Vanity IRule Created 8/5/09 by Justin Adrian This iRule is built to redirect header requests It will take the host name and look for a data set with the following name VURL_host.domain.com The data set should have a string value of the redirect when HTTP_REQUEST { log local0.info [findclass "http" [set ::VURL_[HTTP::host]]] redirect to URL in data set HTTP::redirect [findclass [string tolower [HTTP::uri]] [set ::VURL_[string tolower [HTTP::host]]] " "] }
class VURL_mx.test.com { "/ https://mx.test.com/testclaimapp?whr=badstuff" } class VURL_mytest.test.com { "/ https://mytest.test.com/administration/Default.aspx" } class VURL_pretest.test.com { "/ https://pre.test.com/opensso/WSFederationServlet/metaAlias/tdcauthweb?goto=https://sso-stage.test.com/opensso" } class VURL_tgpp.test.com { "/ https://kxo.test.com/Organizations/Pages/SIandT-Podcasts.aspx" }
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