Forum Discussion
iRule redirection with filter ... ?
Hello @ll
I have a 2 vips http and https there is standard redirection from http to https and its working ...
BUT i need to change this a bit and here is my question :
Is it possible to have users coming from URL : abcwebsite.com going to HTTP VIP will not be redirected to HTTPS vip , but when users are coming from URL : abcwebsite.new.com will be redirected to HTTPS vip ?
4 Replies
- slesh_219299
Cirrus
little update additional url: - abcwebsite.com going to HTTP VIP will not be redirected to HTTPS vip - (with special sign) äbcwebsite.com going to HTTP VIP will not be redirected to HTTPS vip So there will be 2 www with no redirection to https .
- slesh_219299
Cirrus
i found something like that but can someone help me with this and confirm it is ok or correct it please ? 🙂 when HTTP_REQUEST { switch [string tolower [HTTP::host]] { "abcwebsite.com" { HTTP::respond 301 Location "http://abcwebsite.com[HTTP::uri]" } "äbcwebsite.com" { HTTP::respond 301 Location "http://äbcwebsite.com[HTTP::uri]" } "abcwebsite.new.com" { HTTP::respond 301 Location "https://abcwebsite.new.com[HTTP::uri]" } } }2nd one ******************************************
when HTTP_REQUEST { if { [string tolower [HTTP::host]] equals "abcwebsite.com" } { HTTP::respond 301 Location "http://abcwebsite.com[HTTP::uri]" } elseif { [string tolower [HTTP::host]] equals "äbcwebsite.com" } { HTTP::respond 301 Location "http://äbcwebsite.com[HTTP::uri]" } else { HTTP::redirect https://[HTTP::host][HTTP::uri]" } } - Henrik_Gyllkran
Nimbostratus
There are a couple of issues with your example iRule, so let's have a look at it:
when HTTP_REQUEST { switch [string tolower [HTTP::host]] { "abcwebsite.com" { HTTP::respond 301 Location "http://abcwebsite.com[HTTP::uri]" } "äbcwebsite.com" { HTTP::respond 301 Location "http://äbcwebsite.com[HTTP::uri]" } "abcwebsite.new.com" { HTTP::respond 301 Location "https://abcwebsite.new.com[HTTP::uri]" } } }The first case, abcwebsite.com will create an infinite redirect loop, since when you redirect to abcwebsite.com[HTTP::uri] you will match that again and redirect again, and again and...
To solve this you simple don't redirect at all. The idea is that if HTTP:host returns abcwebsite.com that traffic should be sent through to the servers, right? So it would look like this:
"abcwebsite.com" { pool abcwebsite.com_pool }Or whatever your pool might be named for the application.
The second case, with äbcwebsite.com, this is actually not what the BIG-IP will see. Unless something has changed since last I looked at this, those characters aren't actually "allowed" so while you can register a name with special characters, the browser will encode those characters according to a specific method, and that's what will be sent in the host header. So the name will have to be encoded with an IDN converter and then you'll get this: xn--bcwebsite-u2a.com. Again, the example would create an infinite redirect loop so just send that to a pool as well.
The third one though is perfectly fine.
So that gives us something like this:
when HTTP_REQUEST { switch [string tolower [HTTP::host]] { "abcwebsite.com" { pool abcwebsite.com_pool } "xn--bcwebsite-u2a.com" { pool aumlbcwebsite.com_pool } "abcwebsite.new.com" { HTTP::respond 301 Location "https://abcwebsite.new.com[HTTP::uri]" } } }The correct pool names has to be inserted of course.
- Jad_Tabbara__J1
Cirrostratus
Hello slesh,
You can resolve this by configuring :
1) A VS vip_abcwebsite.new.com_https listening on port 443
2) A VS vip_abcwebsite.com_http listening on port 80 with the irule that redirects traffic from http to https for abcwebsite.new.com and do nothing (accept traffic) for abcwebsite.com
when HTTP_REQUEST { if { [string tolower [HTTP::host]] equals "abcwebsite.new.com" } { HTTP::redirect https://[getfield [HTTP::host] ":" 1][HTTP::uri] } elseif { [string tolower [HTTP::host]] equals "abcwebsite.com" } { do nothing } else { reject the traffic if using other hostname (optional) reject } }In this manner all traffic going to abcwebsite.new.com will be in https and all traffic going to abcwebsite.com will be in http...
Hope that it helps
regards
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