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.