Forum Discussion

Qasim's avatar
Qasim
Icon for Cirrostratus rankCirrostratus
Nov 28, 2019

IRULE to Redirect URL if it doesnt match private subnets

Hi Could you please help me with this IRULE that I am trying to make it work:

 

I have created a data group list: private_net and basically if the client IP doesn't match the http header, path and remote client IP then redirect to a home page:

 

when HTTP_REQUEST {

  if { [HTTP::host] contains "syst3-my.test.co.uk" and [HTTP::path] starts_with "/test/cs*" and not !([class match [IP::remote_addr] equals "private_net"]) } {

  HTTP::redirect "https://syst3-my.testco.uk/test/home"

  }

}

 

I am not great with IRule so not sure what am I doing wrong.

 

will really appreciate your help as its pretty urgent.

 

 

thank you

5 Replies

  • Hi,

    Can you try this?

    when HTTP_REQUEST {
    	if { ([HTTP::host] contains "syst3-my.test.co.uk") and ([string tolower [HTTP::path]] starts_with "/test/cs")  } {
    		if { not ([class match [IP::client_addr] equals private_net]) } {
    			HTTP::redirect "https://syst3-my.testco.uk/test/home"
    		}
    	}
    }
    • Qasim's avatar
      Qasim
      Icon for Cirrostratus rankCirrostratus

      HI Mate, thanks for your swift help really appreciate it.

       

      wondering how do I match another URL path as well if I say host match syst3-my.test.co.uk and URL either starts with "/test/cs" or "/test12/cs"

       

       

      thank you

      • when HTTP_REQUEST {
        	if { ([HTTP::host] contains "syst3-my.test.co.uk") and ([string tolower [HTTP::path]] starts_with "/test/cs" or [string tolower [HTTP::path]] starts_with "/test12/cs") } {
        		if { not ([class match [IP::client_addr] equals private_net]) } {
        			HTTP::redirect "https://syst3-my.testco.uk/test/home"
        		}
        	}
        }

        If you want redirect for more path, you can use "switch" statement.