Forum Discussion

s3s1277_111291's avatar
s3s1277_111291
Icon for Nimbostratus rankNimbostratus
Apr 02, 2012

question on iRule

I've created a simple iRule to match a string in URI, and redirect to different URL. But it is appending extra '/' after the hostname in the URL. Any idea why?

 

 

Here is the rule:

 

 

if { [HTTP::uri] contains "string1234" } {

 

log local0. "Matched and redirecting to http://xxxxxx[HTTP::uri]"

 

HTTP::redirect http://xxxxxx[http::uri]

 

}

 

 

And this is what I see in the ltm log file:

 

 

local/tmm info tmm[5076]: Rule testrule : Matched and redirecting to http://xxxxxx//BC/string1234?all

 

 

Note the two '//' after hostname xxxxxxx.

 

 

Thanks.

4 Replies

  • [HTTP::uri] starts with "/" ... if you are adding "/" after host, remove it.

     

    ex: http://xyz.com[HTTP::uri]
  • But I dont have a / after the host. here is the redirect I'm using:

     

     

    HTTP::redirect ]

     

     

  • Hi s3s1277,

    If you want to see what Sashi is talking about add the following to your iRule. You are adding in the "/" in some part of the iRule that is deplayed. The [HTTP::uri] value starts with and includes the "/" (see the log example below).

    Apr 2 15:31:32 local/tmm1 info tmm1[4831]: Rule Z.iRule.Development : Matched and redireting to http://xxxxxx/string1234

    Apr 2 15:31:32 local/tmm1 info tmm1[4831]: Rule Z.iRule.Development : HTTP::host Value: website.com

    Apr 2 15:31:32 local/tmm1 info tmm1[4831]: Rule Z.iRule.Development : HTTP::uri Value: /string1234

    
    when HTTP_REQUEST {
    if { [HTTP::uri] contains "/string1234" } {
    log local0. "Matched and redireting to http://xxxxxx[HTTP::uri]"
    log local0. "HTTP::host Value:  [HTTP::host]"
    log local0. "HTTP::uri Value:  [HTTP::uri]"
    HTTP::redirect "http://xxxxxx[HTTP::uri]"
    }
    }
    

    Hope this helps.
  • Thank you. I was declaring a variable at the top, for the host (without a /). It somehow appends extra /. Without declaring a variable, if I add the host explicitly in the redirect rule, it is not appending the extra /. Like this..

     

    when HTTP_REQUEST {

     

    set vip2 "hostname"

     

    if { [HTTP::uri] contains "string1234" } {

     

    HTTP::redirect http://$vip2[HTTP::uri]

     

    }

     

    }