Technical Forum
Ask questions. Discover Answers.
cancel
Showing results for 
Search instead for 
Did you mean: 
Custom Alert Banner

iRule to forward to subsites

Walter_WorkAcct
Altostratus
Altostratus

In the following code, I want test1, test2 and test3 to route to the pool "pool_subsites_8443" and serve pages and all others to simply go to the main website. However, if you put in website/~test4 you simply get a 404. How can I have this go to the main website instead of return a 404?

when CLIENT_ACCEPTED {
    set hsl [HSL::open -publisher /Common/hsl_publisher]
}
when HTTP_REQUEST {
    if { [HTTP::uri] starts_with "/~" } {
       HSL::send $hsl "The URI is [HTTP::uri] contains a tilde and will be sent to staff server."
       switch -glob [HTTP::uri] {
            "/~test1*" -
            "/~test2*" -
            "/~test3*" 
            { 
                # URI ends with a specific username
                # All these cases use the same action.
         pool pool_subsites_8443 
         }
       default {
             pool pool_main_8443
            }
        }
    } else {
        return     
    }
}
when CLIENT_CLOSED {
  unset hsl
}
2 REPLIES 2

Hi Walter_WorkAcct,

Can you try this iRule?

when CLIENT_ACCEPTED {
	set hsl [HSL::open -publisher /Common/hsl_publisher]
}
 
when HTTP_REQUEST {
	set status 0
	if { [HTTP::uri] starts_with "/~" } {
		set status 1
		HSL::send $hsl "The URI is [HTTP::uri] contains a tilde and will be sent to staff server."
		switch -glob [HTTP::uri] {
			"/~test1*" -
			"/~test2*" -
			"/~test3*" { 
				# URI ends with a specific username
				# All these cases use the same action.
				pool pool_subsites_8443 
			}
			default {
				pool pool_main_8443
			}
		}
	}
	else {
		return     
	}
}
 
when HTTP_RESPONSE {
	if { $status && [HTTP::status] == 404 } {
		HTTP::redirect "https://example.com"
	}
}
 
when CLIENT_CLOSED {
	unset hsl
}

Initially I thought this fix was working correctly but there is a strange bug that if for example I am in example.com/~test1 and go to example.com/~test9 (test9 exists but is not in the select statement) it doesn't redirect and serves a page that I am not 100% sure where it is coming from. Still troubleshooting.

It is like it redirects to www.example.com but is serving the data with a subdirectory from this staff server.