Forum Discussion
iRule match & processing exit
- Nov 17, 2022
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 "/".
I would add some log statements to see exactly what you're getting. It could simply be a string case issue.
On the redirects, your last line is causing this. You're basically saying if the host starts with "intranet", redirect to "intranet.new". But if the same iRule processes intranet.new, then that too will start with "intranet".
when HTTP_REQUEST {
log local0. "Incoming: [HTTP::host][HTTP::uri]"
if { ( [HTTP::host] starts_with "intranet" ) && ( [HTTP::uri] equals "/AAA/" ) } {
log local0. "Catch /AAA/ - Sending to intranet_pool"
pool intranet_pool
} elseif { ( [HTTP::host] starts_with "intranet" ) && ( [HTTP::uri] equals "/BBB/" ) } {
log local0. "Catch /BBB/ - Sending to intranet_pool"
pool intranet_pool
} elseif { ( [HTTP::host] starts_with "intranet" ) && ( [HTTP::host] ne "intranet.net" ) } {
HTTP::redirect https://intranet.new
}
}
Recent Discussions
Related Content
* Getting Started on DevCentral
* Community Guidelines
* Community Terms of Use / EULA
* Community Ranking Explained
* Community Resources
* Contact the DevCentral Team
* Update MFA on account.f5.com