Forum Discussion

BEdmunds_8904's avatar
BEdmunds_8904
Icon for Nimbostratus rankNimbostratus
Oct 15, 2012

so close with an "||" or expression.

I know I am so close to getting this work, and it's so simple...

 

I need a simple rewrite rule that is activated on certain conditions, I was hoping to use "||" to accomplish this, but I get an error that says :"command is not valid in the current scope" with my existing rule, any thoughts?

 

when HTTP_REQUEST {

 

if { ([HTTP:uri] starts_with "/path/to/broken") ||

 

([HTTP:uri] starts_with "/other/path/broken")

 

} {

 

HTTP::redirect "maintenance.html" Note: Modified URL for forum posting.

 

}

 

}

 

So I want the rule to work like if you request site.com/path/to/broken or site.com/other/path/broken, then you are redirected to a maintenance page.

 

3 Replies

  • Hi BEdmunds,

    Try this:

    
    when HTTP_REQUEST {
    if { ([HTTP::uri] starts_with "/path/to/broken") || ([HTTP::uri] starts_with "/other/path/broken") } {
    HTTP::redirect "maintenance.html"
    Note: Modified URL for forum posting.
    }
    }
    

    You had a few errors.

    I would suggest using the iRule Editor. It will help you with syntax and command options. It is a free tool and is available to download off of the main DevCentral Homepage.

    Hope this helps.
  • Awesome, thanks for the tip, I will use that for now on.

     

     

    In the end, as these URI will change...I found a datagroup was a much more simple option for my needs, so didn't end up using the OR operator after all. Thanks for your help!
  • A data group is a great option. You could also do this with a switch statement:

    
    when HTTP_REQUEST {
    switch -glob [HTTP::uri] {
    "/path/to/broken*" - 
    "/other/path/broken*" {
    HTTP::redirect "/maintenance.html"
    }
    }
    }
    

    Aaron