Forum Discussion
IRule change URI only when traffic coming from external
Hello,
need some help:
I've got the need to rewrite URI from domain.com/internal to domain.com/home but only when traffic comes from outside, not from inside (=private net)
the rewrite of the URI I could achieve with a LTM-Policy but not in combination with the second condition. Am I right?
Could someone help me with a IRule?
would be great, thanks
Hi kgaigl,
when HTTP_REQUEST { if { ([HTTP::host] equals "domain.com") and ([string tolower [HTTP::uri]] starts_with "/internal") } { switch -glob [IP::client_addr] { "10.*" - "192.168.*" - "172.16.*" - "172.17.*" - "172.18.*" - "172.19.*" - "172.20.*" - "172.21.*" - "172.22.*" - "172.23.*" - "172.24.*" - "172.25.*" - "172.26.*" - "172.27.*" - "172.28.*" - "172.29.*" - "172.30.*" - "172.31.*" { # log local0. "Host: [HTTP::host] Uri: [HTTP::uri] ClientIP: [IP::client_addr]" } default { HTTP::redirect "https://domain.com/home" # or # HTTP::uri "/home" } } } }
- kgaigl
Cirrocumulus
Hi eaa,
thanks a lot, but I can test it not before next week.
one question: in another IRule there is a string:
if {!([class match [IP::client_addr] equals private_net])}
could I use the expression "private_net" to shorten the rule?
Yes, you can use instead of switch statement.
when HTTP_REQUEST { if { ([HTTP::host] equals "domain.com") and ([string tolower [HTTP::uri]] starts_with "/internal") } { if { not ([class match [IP::client_addr] equals private_net]) } { HTTP::redirect "https://domain.com/home" # or # HTTP::uri "/home" } } }
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