Technical Forum
Ask questions. Discover Answers.
cancel
Showing results for 
Search instead for 
Did you mean: 

irule not redirect with wildcard.

Hien_Truong
Cirrus
Cirrus

when i try to redirect (wildcard) https://www.abc.com//index.cfm?ty=dir or https://www.abc.com//index.cfm?ty=fua, it is not redirect, do you know what happening with my irule? i appreciate your reply:

 

when HTTP_REQUEST {

 if { [HTTP::host] equals "www.abc.com" }

 {

  switch -glob [HTTP::path]

  {

            "/index.cfm?ty=dir"

     { HTTP::respond 301 Location "https://cbs.com/redir-legacy/index.cfm?ty=dir"

      }    

"/index.cfm?ty=fua"

     { HTTP::respond 301 Location "https://cbs.com/redir-legacy/index.cfm?ty=fua"

      }      

      "/"

      { HTTP::respond 301 Location "https://cbs.com/redir-legacy/"

      }

   default

    return    

}

}

}

1 ACCEPTED SOLUTION

Hien_Truong
Cirrus
Cirrus

​Daniel,

you are correct, when I change to HTTP:uri, it works. Thanks a lot for your support.

View solution in original post

3 REPLIES 3

Daniel_Wolf
Nacreous
Nacreous

Hi Hien,

 

your iRule is not redirecting because HTTP:path is only index.cfm. The ty=dir is the query parameter and is in the HTTP::query command. The query is defined as the part of the request past the ? character. See below image for explanation.

0691T00000BUw82QAD.pngMaybe you can do the check in a different way. Use the switch statement for the HTTP::path and use a nested if / else statement for the HTTP::query. Check this out for examples: https://devcentral.f5.com/s/articles/irules-101-13-nested-conditionals

 

KR

Daniel

 

Man, I am blind. You could also use HTTP::uri which contains both, the path and the query parameter...

Hien_Truong
Cirrus
Cirrus

​Daniel,

you are correct, when I change to HTTP:uri, it works. Thanks a lot for your support.