Phatboy, Did you set SharePoint up under Portal Access? How did you configure the resource items? Do you have a top level resource item for /*? One issue that you run into with SP is that it always wants to redirect based on what it thinks is best, which isn't always correct.
There are a couple of ways that I normally have to work around these issues. One of which involves redirecting based on URI and another is changing out host headers so that the AAM doesn't mess everything up. You also need to ensure that you have your rewrite and patching configured (Full w/HTML, Java, and CSS) do not match case. SharePoint has a habit of changing camel-case and messing up matching.
If you are looking for an iRule based solution, you have a couple options, if you want it to be invisible to the user, or if you just want to do a redirect, etc. You could set a session variable at Access_Session_Started which happens only for a NEW session, maybe something like the following.
when ACCESS_SESSION_STARTED {
ACCESS::session data set session.custom.newsession "true"
}
Note: "true" doesnt return as boolean, so when you check the value you need to treat it as a string comparison.
And then check for that on HTTP_REQUEST which will happen twice, once on the initial connect, then after the Access_Session_Started, and you could either change the URI transparently or redirect.
No Redirect: https://devcentral.f5.com/weblogs/joe/archive/2005/07/27/ModifyingUriWithoutRedirect.aspx
With Redirect: https://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/1090523/Redirects-Rewrites-and-App-Transfers-via-iRules.aspx
You can also use APM's session variables which are set automatically, LastMRH, etc.