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