Hi Joe,
If you create a VS and pool members on port 0, LTM will not translate the port. So whatever port the client requests will be used to load balance to the pool. If you want to break out specific port 80 URIs, you could create another VS on port 80 and use HTTP classes or an iRule to select a pool based on the requested URI. If you wanted to do this for HTTPS traffic, you could create a VS on port 443 and decrypt the SSL with with a clientssl profile. You could then use HTTP classes or an iRule to select a pool based on the requested URI. The pool members would normally be defined on port 80 and you'd need to enable port translation on this VS.
To use HTTP classes to select a pool member based on URI, you can create one class per pool. Then configure the URI/path filters using string patterns like /portal* for the /portal requests and /ws* for /ws requests. To use an iRule to do the same thing, you could use a switch statement:
http://devcentral.f5.com/wiki/default.aspx/iRules/switch
If you want more detailed steps for implementing this, let us know which methods you think you'd like to use.
Aaron