I seem to have a similar issue where we use the HTTP::uri starts_with rather than contains. My problem is once packet gets load balanced to one set of pool it seems to get "stuck" there and irule will not process any future requests. So subsequent requests kept on going to the stuck pool rather than being evaluated by irule again. I suspect something with keepalive on the webserver since if I disable keepalive it seems to process through irule again. I'd suggest checking your keepalive setting and see if its enabled. I have a ticket open w/F5 to see if they can shine some light on this issue.