Forum Discussion

Lucilius_223799's avatar
Lucilius_223799
Icon for Nimbostratus rankNimbostratus
Sep 24, 2015
Solved

iRule issues

I have some issues trying to create a iRule. I tried to create a redirect using when HTTP_REQUEST { if { ([HTTP::uri] contains "www.abc.def")} { HTTP::redirect "http://www.abc.com" } }...
  • Hannes_Rapp_162's avatar
    Sep 24, 2015

    Hello,

     

    Welcome to DevCentral.

     

    It seems like you're not using the correct function in your conditional IF-statement. That means, the block of code inside your conditional statement will never be processed. I've added a few comments to the code so you can get started with the most typical functions for HTTP services.

     

    when HTTP_REQUEST {
    
     What's the difference of URL, Host, URI, Path, Query?
     URL = www.abc.com/asd/asd?asd111=11
     [HTTP::host] function of this URL would return "www.abc.com"
     [HTTP::path] function of this URL would return "/asd/asd"
     [HTTP::uri] function of this URL would return "/asd/asd?asd111=11"
     [HTTP::query] function of this URL would return "asd111=11"
    
     The correct version of this code can be found below. Tip: by using HTTP::redirect you always issue a 302 redirect. I don't recommend this function at all. Instead, I recommend you get used to a slightly harder alternative, HTTP::respond which allows you to have a direct control of the redirect method and optinal HTTP headers if you wish to include them with the redirect.
    
      if { [HTTP::host] contains "www.abc.def" }{
        HTTP::respond 301 location "http://www.abc.com"
      }
    
    }