Rewrite HTTP Redirect Hostname
Problem this snippet solves:
Intercepts server-set redirect responses & rewrites the specified hostname.
See the ProxyPass and ProxyPass Lite iRules for related examples.
Code :
# To redirect to a different hostname than that set in an the origin server redirect: when HTTP_RESPONSE { # Check if server response is a redirect if { [HTTP::header is_redirect]} { # Log original and updated values log local0. "Original Location header value: [HTTP::header value Location],\ updated: [string map -nocase {myold.hostname.com mynew.hostname.com} [HTTP::header value Location]]" # Do the update, replacing myold.hostname.com with mynew.hostname.com HTTP::header replace Location [string map -nocase {myold.hostname.com mynew.hostname.com} [HTTP::header value Location]] } } # Note: Here is an example which rewrites the protocol in redirects from http:// to https:// and rewrites the host in redirects from the server IP address to the Host name the client used in the request. when HTTP_REQUEST { # Save host name (use VS IP if no HTTP host header was found if {[HTTP::host] eq ""}{ set host [IP::local_addr] } else { set host [HTTP::host] } } when HTTP_RESPONSE { # Check if server response is a redirect if { [HTTP::header is_redirect]} { # Log original and updated values log local0. "Original Location header value: [HTTP::header value Location],\ updated: [string map -nocase "http:// https:// [IP::server_addr] $host" [HTTP::header value Location]]" # Do the update, replacing http:// with https:// and the server IP with the host or VS IP HTTP::header replace Location [string map -nocase "http:// https:// [IP::server_addr] $host" [HTTP::header value Location]] } }
Published Mar 18, 2015
Version 1.0Deb_Allen_18
Historic F5 Account
Joined September 25, 2004
Deb_Allen_18
Historic F5 Account
Joined September 25, 2004
No CommentsBe the first to comment