Forum Discussion
MOHIT_125417
Altostratus
Mar 28, 2015Explaination on the iRule
Hi,
Can somebody explain me about "string trimright" in the below iRule.
when HTTP_REQUEST { if { [string tolower [HTTP::uri]] ends_with "/" } { HTTP::redirect http://[HTTP::host][string trimright [HTTP::uri] "/"] } }
1 Reply
- StephanManthey
Nacreous
Hi MOHIT,
the iRule will check an incoming request for the URI (
) for a trailing slash (/path?query
). In case of a match it will remove all trailing slashes and redirect the client to the initial host and modified URI as follows:/curl -I 'http://10.131.131.102/test/' HTTP/1.0 302 Found Location: http://10.131.131.102/test Server: BigIP Connection: Keep-Alive Content-Length: 0In the example above the URI ends with a (
) and the client will be redirected as indicated by the location header in the response./curl -I 'http://10.131.131.102/test' HTTP/1.0 200 OK Server: LB-NET Set-Cookie: JSESSIONID=427398920.293652780 Set-Cookie: StaticCookie=lb-net_static Connection: close Content-Length: 1016In the second request the URI does not contain the trailing (
) and the requested object will be served. To avoid a continuous loop (default requests will be of "/" and ends with a (/
) as well I recommend to change the iRule as follows:/when HTTP_REQUEST { if { ([string tolower [HTTP::uri]] ends_with "/") and not ([HTTP::uri] equals "/") } { HTTP::redirect http://[HTTP::host][string trimright [HTTP::uri] "/"] } }You may also consider, to verify the
only. Thanks, Stephan PS: Please lookup the tcl manpage for details on the "[HTTP::path]
" command.string trimright
Help guide the future of your DevCentral Community!
What tools do you use to collaborate? (1min - anonymous)Recent Discussions
Related Content
DevCentral Quicklinks
* Getting Started on DevCentral
* Community Guidelines
* Community Terms of Use / EULA
* Community Ranking Explained
* Community Resources
* Contact the DevCentral Team
* Update MFA on account.f5.com
Discover DevCentral Connects