I rewrote the iRule to add the logic that Lucas_Thompson referenced to determine when I need to redirect. I can't find anything wrong with the code. However, I get ERR_CONNECTION_RESET.
For added information, I am using this iRule in conjunction with Universal persistence.
The new code is below.
when HTTP_RESPONSE {
## PERSISTENCE
# If the JSESSIONID exists, we'll pass the cookie along
if { [HTTP::cookie exists "JSESSIONID"] } {
persist add uie [HTTP::cookie "JSESSIONID"] 86400
}
## REDIRECT
# Check if the request path is not "/pc/service/SSOLogin"
if { $url_redirect } {
# Redirect to the new URL
HTTP::redirect $new_url
}
}
when HTTP_REQUEST {
## PERSISTENCE
# If the JSESSIONID exists, we'll maintain that persistence
if { [HTTP::cookie exists "JSESSIONID"] } {
persist uie [HTTP::cookie "JSESSIONID"]
}
## REDIRECT
# Check if the request path is already "/pc/service/SSOLogin"
# If so, set the url_redirect to false. If not, set it to true.
if { [string equal [HTTP::uri] "/pc/service/SSOLogin"] } {
set $url_redirect 0;
} else {
set $url_redirect 1;
# This grabs the base URL from the incoming request
# For example, https://my.site.com/some/path the base_url is set to https://my.site.com
set base_url "https://[HTTP::host]"
# Defining the new path
set new_path "/pc/service/SSOLogin"
# Construct the new URL
# For example, https://my.site.com/pc/service/SSOLogin
set new_url "$base_url$new_path"
}
}