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

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.