g1smd - 11:18 pm on May 22, 2012 (gmt 0)
Placing the external redirect after the internal rewrite exposes the previously rewritten path as a new URL back out on to the web.
The order of your three rulesets is exactly backwards to what it should be.
It should be:
- index file redirect
- subdomain redirect
- internal rewrite
Additionally, the pattern
!^online.example.com$ should be
Escape the literal periods in RegEx patterns.
The ( ) ? addition prevents a redirect loop for pure HTTP/1.0 requests.