Apache 2.4 url​​用https重写

时间:2016-09-07 11:08:22

标签: apache ssl mod-rewrite

我正在尝试使用Apache 2.4进行网址重写。我想要那些请求

  1. http://subdomain.domain.com
  2. http://www.subdomain.domain.com
  3. https://www.subdomain.domain.com
  4. 重新映射到

    https://subdomain.domain.com

    以避免SSL通配符证书中出现与www.subdomain.domain.com不匹配的错误。

    我尝试过:

        <VirtualHost ip:80>
            ServerName subdomain.domain.com
            RewriteEngine On
            RewriteCond %{HTTPS} off
            RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}       
       </VirtualHost>
       <VirtualHost ip:80>
            ServerName www.subdomain.domain.com
            Redirect permanent / https://subdomain.domain.com
       </VirtualHost>
       <VirtualHost ip:443>
            ServerName www.subdomain.domain.com
            Redirect permanent / https://subdomain.domain.com
       </VirtualHost>
      <VirtualHost ip:443>
            ServerName subdomain.domain.com
            ...
            ...
            ...
    

    我的配置适用于(1)和(2)但不适用于(3)。我的错误在哪里?

1 个答案:

答案 0 :(得分:1)

我认为问题是您的某个端口443虚拟主机没有启用SSL。

试试这个

<VirtualHost ip:443>
    ServerName www.subdomain.domain.com
    Redirect permanent / https://subdomain.domain.com
    SSLEngine on
    SSLCertificateFile    /something
    SSLCertificateKeyFile /something
</VirtualHost>

否则,该请求将无法理解,因为它已加密。

请参阅例如How to redirect https to http without any SSL Certificate了解为何需要这样做。