Well, for me the iRule looks fine but maybe any other one see's the fault..
Personally i would write an
log local0. "iRule xyz - Host: [HTTP::host][HTTP::uri] sent to [LB::server addr]"
into the irule and check the logs if everything looks like expected.
But i believe that the LB process as it self has nothing to do with the URL/URI. So if the irule gets executed and the if statement is true, the request gets forwarded to the configured pool.
Maybe there is something wrong with your pool-/member configuration?