Forum Discussion

mdcarson_58978's avatar
mdcarson_58978
Icon for Nimbostratus rankNimbostratus
Aug 08, 2012

If not a , b, or c, do 1 through 15

I have an iRule where I need to run some commands, but only if the URI does not match several cases.

 

 

I can't seem to get two negative conditionals to work and I don't have the option to invert the checks and use switch.

 

 

 

This works OK:

 

when HTTP_REQUEST {

 

if { !([HTTP::uri] starts_with "/blah") }{

 

do something

 

}

 

}

 

 

 

 

 

 

This doesn't:

 

when HTTP_REQUEST {

 

if { ( !([HTTP::uri] starts_with "/blah")) or ( !([HTTP::uri] starts_with "/blah2")) }{

 

do something

 

}

 

}

 

 

 

Ideally, l'd like to have a rule that says if the URI doesn't start with any of these five things continue with the rest of the irule.

 

 

 

Any suggestions?

 

2 Replies

  • Hi,

    Here's an example:

    when HTTP_REQUEST {
    
    switch -glob [HTTP::uri] {
    "/a*" -
    "/d*" -
    "/f*" {
     Do nothing
    }
    default {
     Did not match a, d or f so do something
    }
    }
    }
    

    Aaron
  • Pretty basic. I should have figured that out. I find solutions for my problems in your past forum posts all the time. Thanks for your help Aaron!