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 <[email protected]
<mailto:[email protected]>>:
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 <http://webmail.foo.com> or foo.com/webmail
<http://foo.com/webmail>
My old rules were:
<VirtualHost *:80>
ServerName webmail.htt-consult.com
<http://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.
So I tried to write a more restrictive rule, trying to follow
instructions from
http://httpd.apache.org/docs/current/rewrite/intro.html
<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/
<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 <http://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:// ?
And how do I handle Webmail as well as webmail? Would that be
RedirectMatch ^.*[wW]ebmail https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
thanks