iRule match & processing exit
Hi,
I'm trying write an iRule for an upcoming migration where we have multiple sites (MS Sharepoint) using the same host with different URI's. Some I want to just forward to a specific pool, while the 'rest' to be redirected to a new page. The 'rest' is basically everything starting with intranet, except some of the specific URI
when HTTP_REQUEST
{ if
{ ([HTTP::host] starts_with "intranet") && ([HTTP::uri] equals "/AAA/") } { pool intranet_pool
} elseif
{ ([HTTP::host] starts_with "intranet") && ([HTTP::uri] equals "/BBB/") } { pool intranet_pool
} elseif
{ [HTTP::host] starts_with "intranet" } { HTTP::redirect https://intranet.new
}}
I'm facing 2 issues:
- everything ends up being redirected intranet.new, no matter if the URI is AAA, BBB
- I'm getting too many redirects with above iRule. If i change the redirect to f5.com it works, but still redirect everything starting with intranet
Do I need to exit the iRule somehow after I got the first match? Or how do I stop further processing?
I've tried the same with LTM Policy, but getting same results.
Appreciate your feedback. Thanks.
Hi Stefan_Engel,
In your code, a redirect loop occurs because the redirected page always starts with "intranet". Can you try this iRule?
when HTTP_REQUEST { if { [HTTP::host] starts_with "intranet" && [HTTP::uri] equals "/AAA/" } { pool intranet_pool return } elseif { [HTTP::host] starts_with "intranet" && [HTTP::uri] equals "/BBB/" } { pool intranet_pool return } elseif { [HTTP::host] starts_with "intranet" && [HTTP::uri] ne "/" } { HTTP::redirect https://intranet.new return } }
If the uri is not "/", it will redirect.
If the uri is "/", it will not redirect, traffic will be forwarded to the default pool.
If there is no character after the hostname in url, the uri is always "/".