For more information regarding the security incident at F5, the actions we are taking to address it, and our ongoing efforts to protect our customers, click here.

Forum Discussion

jonathanw84's avatar
Jun 03, 2020
Solved

iRule to Add Trailing Slash Except for Extensions

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"}...
  • cjunior's avatar
    Jun 04, 2020

    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:

    1. "/apps" will become "/apps/" internally;
    2. "/apps?param=value" will become "/apps/?param=value" internally;
    3. "/test.html" and "/test.html?param=value" remais the same. 

    I hope it helps.

    Regards