iRule to modify the URI without a client redirect
Say I have a site called https://la.mysite.com (10.1.1.100), which is not currently served by F5. I want clients who browse to https://china.mysite.com, which is set up as a VS on F5 to see the content located at https://la.mysite.com/documents/china.pdf. Except that I want the browser to display china.mysite.com/documents/china.pdf in the address bar.
I've tried these iRules, but each one produces the same result. A packet capture shows a HTTP 302 coming from the VS, and then the browser address bar changes to la.mysite.com instead of staying china.mysite.com. What am I doing wrong?
when HTTP_REQUEST {
if { [HTTP::host] equals "china.mysite.com"} { HTTP::header replace Host "la.mysite.com" }
}
when HTTP_REQUEST {
if { [HTTP::host] equals "china.mysite.com"} { HTTP::path "https://la.mysite.com" } }
You may want to look at this page:
https://devcentral.f5.com/wiki/iRules.HTTP__uri.ashx
Using a redirect will change the URL on the browser.
Changing the Host header only affects what the server gets.
You will need the IP address of la.mysite.com, say it is 1.2.3.4
You will need an irule like this:
when HTTP_REQUEST { if { [HTTP::uri] equals "/" } { the node command directs the request to the server whether or not it is behind the BigIP. Make sure the BigIP has a route to that server. node 1.2.3.4 In case you don't have SNAT on the virtual, you may need it here. snat automap In case the server complains, set the host header. HTTP::header replace Host "la.mysite.com" Finally change the URI while on its way to server. HTTP::uri /documents/china.pdf } }
Here is the page for the SNAT command:
https://devcentral.f5.com/wiki/iRules.snat.ashx
Here is the page for the node command: