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

Reply via email to