Let's assume your external hostname is "blah.domain.com" and your internal servers are configured with a hostname of "
www.domain.com", then you can use simple host name header rewriting to do the trick.
when HTTP_REQUEST {
if { [HTTP::host] eq "blah.domain.com" } {
HTTP::header replace "Host" "www.domain.com"
}
}
This will change the Host header going to the backend webserver from blah.domain.com to "
www.domain.com" so a request for "
http://blah.domain.com/foobar" would look like "
http://www.domain.com/foobar" to the backend server.
Now for your specific question, you mention that you would like "blah.domain.com" to be treated like "
www.domain.com/uri. It's a bit unclear on whether you are asking to redirect all "
http://blah.domain.com/something" requests to "
http://www.domain.com/fixeduri" where "something" and "fixeduri" are different values or whether you are just asking to keep the uri portion of the request the same. If it's the same, then the above iRule will work for you as it doesn't modify the original URI.
Now if you did want to map all incoming requests to a fixed URI, you could do something like the following:
when HTTP_REQUEST {
if { [HTTP::host] eq "blah.domain.com" } {
HTTP::header replace "Host" "www.domain.com"
HTTP::uri "/fixedvalue"
}
}
This will turn all requests to "
http://blah.domain.com/..." to "
http://www.domain.com/fixedvalue".
Since these iRules are just modifying HTTP header values to the backend server, they will not be reflected in the browsers address bar as they would if being sent a HTTP redirect.
Let me know if this suits your needs and if not, some more concrete examples of mappings you want to perform.
-Joe