cancel
Showing results for 
Search instead for 
Did you mean: 
Deb_Allen_18
Historic F5 Account

Problem this snippet solves:

This iRule uses findclass to perform class lookup for URI's of varying path length, returning the value for the longest path matched. This example uses the lookup value for pool selection, but of course could be modified to send a redirect perform some other appropriate action. This rule should only be used on v9. If using v10 or v11, it's recommended to use "class match" instead of findclass.

Code :

when HTTP_REQUEST {
  set lookup [HTTP::path]
  set i 1
  while { $i > 0 }{
    set myPool [findclass $lookup $::myPools " "]
    if {$myPool != ""}{
      pool $myPool
      # log local0. "Path: [HTTP::path]  Pool: $myPool"
      break
    } else {
      set i [string last "/" [string range $lookup 0 [expr [string length $lookup]-2]]]
      set lookup [string range $lookup 0 $i]
    }
  }
}

### Required Class: ###
# (Note all paths are represented twice, once with a trailing slash and once without. 
# That format is critical for proper functioning of the iRule above if legal URI's for which
#  the match must succeed may be submitted without the trailing slash.)

class myPools  {
   "/this pool6"
   "/this/ pool6"
   "/this/is pool5"
   "/this/is/ pool5"
   "/this/is/my pool4"
   "/this/is/my/ pool4"
   "/this/is/my/path pool3"
   "/this/is/my/path/ pool3"
   "/this/is/my/path/ok pool2"
   "/this/is/my/path/ok/ pool2"
   "/this/is/my/path/ok/file.html pool1"
}

Tested this on version:

9.0
Comments
JRahm
Community Manager
Community Manager
Contributed by deb.
Version history
Last update:
‎30-Jan-2015 04:47
Updated by:
Contributors