03-Jun-2020
14:24
- last edited on
03-May-2022
15:31
by
LiefZimmerman
Hello,
I have an iRule that I am using to direct requests to a specific pool based on the URI:
when HTTP_REQUEST {
set uri [string tolower [HTTP::uri]]
if {[HTTP::uri] starts_with "/apps"} {
pool ProxyPass_DEV_pool_2
}
else {
pool ProxyPass_DEV_pool_1
}
}
This is working fine, but I also need to ensure that any request that does not have an trailing slash "/" at the end, gets it added, with the exception of requests that end in an extension. For example: www.website.com/apps would become www.website.com/apps/, but for any URI really.
Additionally, www.website.com/test.html would not be affected.
Any suggestions? Thanks!
Solved! Go to Solution.
04-Jun-2020
10:50
- last edited on
03-May-2022
15:26
by
LiefZimmerman
Hello,
Considering that the resource will only have the dot char to extensions, I do this way:
when HTTP_REQUEST {
if { not ( [HTTP::path] ends_with "/") && not ( [URI::basename [HTTP::uri]] contains "." ) } {
# Append slash and keep querystring when it exists
HTTP::uri [HTTP::path]/[expr { "[URI::query [HTTP::uri]]" eq {} ? {} : "?[URI::query [HTTP::uri]]" }]
}
if { [string tolower [HTTP::uri]] starts_with "/apps" } {
pool ProxyPass_DEV_pool_2
}
else {
pool ProxyPass_DEV_pool_1
}
}
Where:
I hope it helps.
Regards
04-Jun-2020
10:50
- last edited on
03-May-2022
15:26
by
LiefZimmerman
Hello,
Considering that the resource will only have the dot char to extensions, I do this way:
when HTTP_REQUEST {
if { not ( [HTTP::path] ends_with "/") && not ( [URI::basename [HTTP::uri]] contains "." ) } {
# Append slash and keep querystring when it exists
HTTP::uri [HTTP::path]/[expr { "[URI::query [HTTP::uri]]" eq {} ? {} : "?[URI::query [HTTP::uri]]" }]
}
if { [string tolower [HTTP::uri]] starts_with "/apps" } {
pool ProxyPass_DEV_pool_2
}
else {
pool ProxyPass_DEV_pool_1
}
}
Where:
I hope it helps.
Regards
08-Jun-2020 07:50
Thanks cjunior! This worked well with only one minor issue. It looks like it is appending the / regardless if it the / is there or not. Is there a way to make the statement to say "if not contains "." AND does not end with "/", to add the "/"?
Thanks!
08-Jun-2020 07:59
Ops! That passed by my eyes :/.
Thank you for warn me.
I rewrited that condition. Check that out.
08-Jun-2020 08:05
Thank you so much! I was on the right track but I was slightly off. I really appreciate your help. Take care!