Aaron,
Sorry it has taken me so long to get back to this... putting out fires all day. As time permits I have been working with the first of your rules, and it appears that the initial case
if {[domain [HTTP::host] 3] ne ""}
works as planned, but I can't seem to get the else condition to execute properly. I tried adding some inline log statements to help with troubleshooting, but they didn't execute either (I probably didn't code the statements correctly).
I also have another semi-related question with regard to your original iRule at the top of this thread. When I use it on the VS that listens for http (port 80), it works properly. If the user types https://example.com, that VS never runs so the redirect never occurs. I tried adding the same iRule to the https VS for the same site, and it doesn't work there. Can you tell me why?