2017-03-06 19:15 GMT+01:00 Robert Moskowitz <r...@htt-consult.com>: > Luca, > > Thank you for replying. > > On 03/06/2017 04:07 AM, Luca Toscano wrote: > > Hi Robert, > > 2017-03-05 21:57 GMT+01:00 Robert Moskowitz <r...@htt-consult.com>: > >> Hello, >> >> This is for Apache 2.4 on Centos7. I am migrating from Apache 2.2 on >> Centos6. >> >> I want to support redirecting all webmail queries to https. for either >> queries to: >> >> webmail.foo.com or foo.com/webmail >> >> My old rules were: >> >> <VirtualHost *:80> >> ServerName webmail.htt-consult.com >> ServerAlias webmail >> RewriteEngine On >> RewriteCond %{SERVER_PORT} !^443$ >> RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R] >> ExpiresDefault "access plus 10 years" >> AddOutputFilterByType DEFLATE text/html text/plain text/xml >> php_admin_flag session.cookie_secure "1" >> </VirtualHost> >> >> This SEEMED to only work for the webmail virtual host, and not others on >> this server. When I used this rule set on the new server, it clearly was >> redirecting all web accesses to https. > > > Have you checked if the VirtualHost is the default one (you can use > apachectl -S to confirm)? > > > Comes back <null> response. >
This is really strange.. Have you checked if the apachectl binary is working correctly? > > >> So I tried to write a more restrictive rule, trying to follow >> instructions from >> >> http://httpd.apache.org/docs/current/rewrite/intro.html >> >> It would seem the rule: >> >> RewriteRule ^.*webmail https://%{SERVER_NAME}%{REQUEST_URI} [L,R] >> >> Should work, but the test site I tried: >> >> http://martinmelin.se/rewrite-rule-tester/ >> >> Did not show this did the rewrite to https. > > > So from http://httpd.apache.org/docs/current/mod/mod_rewrite. > html#rewriterule: > > "RewriteRule Pattern Substitution [flags]" > "In VirtualHost context, The Pattern will initially be matched against the > part of the URL after the hostname and port, and before the query string > (e.g. "/app1/index.html"). This is the (%-decoded) URL-path." > > If I got it correctly you are trying to match the hostname in the Pattern, > that shouldn't work in Vhost context. > > Also how to direct Webmail.foo.com to https://webmail.foo.com? >> > > https://httpd.apache.org/docs/2.4/mod/mod_alias.html#redirect or > https://httpd.apache.org/docs/2.4/mod/mod_alias.html#redirectmatch might > help you (and in my opinion they are way more maintainable than rewrite > rules). > > > > RedirectMatch ^.*webmail https://%{SERVER_NAME}%{REQUEST_URI} [L,R] > > But how do I get this NOT to redirect when it is already https:// ? > It shouldn't be a problem if you use the rule only in the Virtual Host listening on port 80 (since no https request should land there). > And how do I handle Webmail as well as webmail? Would that be > > RedirectMatch ^.*[wW]ebmail https://%{SERVER_NAME}%{REQUEST_URI} [L,R] > I would do multiple tests on your environment to see which one works best :) Thanks! Luca