#Different Redirects
########################
302 Redirects
########################
when HTTP_REQUEST {
HTTP::redirect https://www.domain.com/
}
########################
301 Redirects
########################
when HTTP_REQUEST {
HTTP::respond Location 301 https://www.domain.com/
}
############################
IF-Conditional Redirect:
############################
# Matching a condition
when HTTP_REQUEST {
if {[HTTP::host] eq "domain.com"} {
HTTP::respond Location 301 https://www.domain.com/
}
}
# NOT matching a condition
when HTTP_REQUEST {
if { not ([HTTP::host] eq "domain.com") } {
HTTP::respond Location 301 https://www.domain.com/
}
}
# Multiple conditions
when HTTP_REQUEST {
if { ([HTTP::host] eq "domain.com") and ([HTTP::uri] eq "/login")} {
HTTP::respond Location 301 https://www.domain.com/login/
}
}
#if & elseif
when CLIENT_ACCEPTED {
set default_pool [LB::server pool]
}
when HTTP_REQUEST {
if { ([HTTP::host] eq "domain1.com") } {
HTTP::respond Location 301 https://www.domain1.com/login/
} elseif { ([HTTP::host] eq "domain2.com") } {
HTTP::respond Location 301 https://www.domain1.com/login/
} else {
pool $default_pool
}
}
##################################
Switch-Conditional Redirect:
##################################
#Check multiple unique domains
when CLIENT_ACCEPTED {
set default_pool [LB::server pool]
}
when HTTP_REQUEST {
switch -glob [HTTP::path] {
"domain1.com" {
HTTP::respond Location 301 https://www.domain1.com/
}
"domain2.com" {
HTTP::respond Location 301 https://www.domain2.com/
}
default {
pool $default_pool
}
}
}
#Redirect to same URL
when CLIENT_ACCEPTED {
set default_pool [LB::server pool]
}
when HTTP_REQUEST {
switch -glob [HTTP::path] {
"domain1.com" -
"domain2.com" {
HTTP::respond Location 301 https://www.domain.com/
}
default {
pool $default_pool
}
}
}
############################
Data Group
############################
class CLASS_HSF {
{
"/str1" { "domain1.com" }
"/str2" { "domain2.com" }
}
}
when CLIENT_ACCEPTED {
set DEFAULT [LB::server pool]
}
when HTTP_REQUEST {
set HOST [string tolower [HTTP::host]]
set URI [string tolower [HTTP::uri]]
if { $HOST equals "www.domainhs.com" }{
HTTP::respond 301 Location "http://www.domain.com[HTTP::uri]"
} elseif { [class match $URI starts_with CLASS_HSF] } {
set DOMAIN [class match -value $URI contains CLASS_HSF]
HTTP::respond 301 Location "http://$DOMAIN"
} else {
pool $DEFAULT
}
}
Reference: