I've worked around all of it by deleting all the webmail virtualhosts and PHP redirects and putting this at the start of the VirtualHosts list:
Allow me to suggest a different approach, and one which has been working on my server for a while now.
<VirtualHost *> ServerName www.domain.com ServerAdmin webmaster@xxxxxxxxxx DocumentRoot /var/www/domain
RewriteEngine on RewriteCond %{SERVER_PORT} !^443$ RewriteRule ^/(.*) https://%{SERVER_NAME}/$1 [L,R,NC] </VirtualHost>
What this does is act on any connection which does not come in on port 443. That part is obvious. The neat thing is that it then takes everything in the URL after the first slash with the (.*) and remembers it as $1. By "after the first slash" I mean after the slash at the end of http://www.domain.com/ <-- that last slash. So everything after that slash, that is the internal URL, is memorized. The URL is then rewritten as https://www.domain.com/$1 where "www.domain.com" came from the SERVER_NAME httpd variable and $1 is the internal URL as memorized earlier. I don't remember what the L,R,NC do... read the httpd docs! <grin>
Result: *any* page on your site will then be immediately and forcibly redirected to the very same URL but over the secure connection. Works *beautifully*.
-- Rodolfo J. Paiz rpaiz@xxxxxxxxxxxxxx http://www.simpaticus.com