在 Apache 上重写和 SSL

Rewrite & SSL on Apache

我在 Apache 上为 SSL 配置了一个网站作为虚拟主机。 SSL 配置工作正常,https://www.optimise.co.id. However, if a user arrives on http://optimise.co.id I want it to forward onto https://www.optimise.co.id - at the moment its stopping on https://optimise.co.id 显示无效证书(它只对 www 有效。)

我在下面包含了虚拟主机配置。非常感谢任何帮助。

谢谢

<VirtualHost *:443>
DocumentRoot ######
RewriteEngine On
ServerName www.optimise.co.id
ServerAlias optimise.co.id
SSLEngine On
SSLCertificateFile /var/www/certificates/#####.crt
SSLCertificateKeyFile /var/www/certificates/#####.key
SSLCertificateChainFile /var/www/certificates/####.crt
</VirtualHost>
<VirtualHost *:80>
DocumentRoot ######
RewriteEngine On
ServerName www.optimise.co.id
ServerAlias optimise.co.id
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</VirtualHost>

您需要将 optimise.co.id 重定向到 SSL VHost 中的 www.optimise.co.id,并且在非 SSL VHost 上不需要 mod_rewrite:请参阅 apache doc.只需使用 www.

将非 SSL 上的所有内容重定向到 SSL VHost
<VirtualHost *:443>
    DocumentRoot ######
    RewriteEngine On
    ServerName www.optimise.co.id
    ServerAlias optimise.co.id
    SSLEngine On
    SSLCertificateFile /var/www/certificates/#####.crt
    SSLCertificateKeyFile /var/www/certificates/#####.key
    SSLCertificateChainFile /var/www/certificates/####.crt

    # redirect everything to host to www.host :
    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^optimise.co.id
    RewriteRule (.*) https://www.optimise.co.id/ [R=301,L]
</VirtualHost>

<VirtualHost *:80>
    ServerName www.optimise.co.id
    ServerAlias optimise.co.id
    Redirect permanent / https://www.optimise.co.id/
</VirtualHost>