Forum Discussion
Irule to redirect based on both IP and URI else default
Hey folks,
I am trying to write an Irule that redirects based on IP & URI. So I want to say if you are coming from this IP 1.1.1.1 and your URI contains /notcool then redirect to a URL, otherwise just send to the default pool. I have tried a few things and can get it to work for just the IP or just the URI but when I combine them I get no love.
Here is what I am working on.
This one below if I do the
if { $http_uri starts_with "/notcool"} on its own OR if I do
if { $client_ip equals "1.1.1.1"} without any mention of the other I am good,
but when I get greedy and try to do both that's when it falls apart.
when HTTP_REQUEST {
set http_uri [HTTP::uri]
set client_ip [IP::client_addr]
if { $http_uri starts_with "/notcool"}{
if { $client_ip equals "1.1.1.1"}{
HTTP::redirect "https://coolnewpage.com/supercool"
}
else
{
pool notcool_pool
}
}
}
I also tried doing it like
when HTTP_REQUEST {
set http_uri [HTTP::uri]
set client_ip [IP::client_addr]
if ( { $http_uri starts_with "/notcool"} && {$client_ip equals "1.1.1.1"}) {
HTTP::redirect "https://coolnewpage.com/supercool"
}
else
{
pool notcool_pool
}
}
}
I appreciate any help you gurus can lend.
Thank you!
Joe
Sorry, try this. Couldn't quite remember where to put the parentheses.
when HTTP_REQUEST {
if { ([HTTP::uri] starts_with "/notcool") && ([IP::client_addr] equals "1.1.1.1")} {
HTTP::redirect "https://coolnewpage.com/supercool"
}
else
{
pool notcool_pool
}
}
}
- atothCirrus
Sorry, try this. Couldn't quite remember where to put the parentheses.
when HTTP_REQUEST {
if { ([HTTP::uri] starts_with "/notcool") && ([IP::client_addr] equals "1.1.1.1")} {
HTTP::redirect "https://coolnewpage.com/supercool"
}
else
{
pool notcool_pool
}
}
}
- atothCirrus
Try something like this? From what I've seen, when you've got two conditions to check, you have surround each with parentheses.
when HTTP_REQUEST {
if ( { [HTTP::uri] starts_with "/notcool"}) && ({[IP::client_addr] equals "1.1.1.1"}) {
HTTP::redirect "https://coolnewpage.com/supercool"
}
else
{
pool notcool_pool
}
}
}
- sundogbrewAltocumulus
Hey Atoth,
I can't save it, i am getting this error not sure if I missed something in your response?
Rule [/Common/test-jose] error: /Common/test-jose:2: error: [parse error: PARSE syntax 23 {syntax error in expression "(": premature end of expression}][(]
/Common/test-jose:2: error: [undefined procedure: )][)]
/Common/test-jose:2: error: [undefined procedure: &&][if ( { [HTTP::uri] starts_with "/notcool"}) && ({[IP::client_addr] equals "1.1.1.1"}) {
HTTP::redirect "https://coolnewpage.com/supercool"
}
else
{
pool notcool_pool
}]
/Common/test-jose:10: error: [command is not valid in the current scope][}]
Thanks
Joe
- sundogbrewAltocumulus
Atoth,
That did it! Thank you so much. I knew it was a parentheses issue but couldn't figure that one out! 😳
Thank you!
Joe
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