当我在浏览器中输入我网站的非 SSL URL“cms00.example.com”时,它不会重定向到https://cms00.example.com。如果我输入 HTTP 地址,我可以看到该网站;如果我输入 HTTPS 地址,我可以看到该网站。我就是无法让从 http 到 https 的重定向正常工作。我阅读了大量关于如何执行此操作的文章,并尝试了所有建议,但我的配置仍然不起作用。我在 Debian 8 上运行 Apache 2.4.10,这是我第一次使用 Apache。
我已经运行了这两个命令并验证了重写和 ssl 模块已经加载:
sudo a2emod rewrite # <- already enabled
sudo a2emod ssl # <- already enabled
我没有对 /etc/apache2/apache2.conf 做任何修改,也没有创建任何其他 .htaccess 文件。
这是我的配置文件:
# /etc/apache2/sites-available/vhosts.conf
DirectoryIndex index.php index.html
<VirtualHost *:80>
ServerName cms00.example.com
DocumentRoot "/var/www/html"
Redirect permanent / https://cms00.example.com
</VirtualHost>
<VirtualHost *:443>
ServerName cms00.example.com
DocumentRoot "/var/www/html"
SSLEngine on
SSLCipherSuite AES256+EECDH:AES256+EDH
SSLProtocol All -SSLv2 -SSLv3
SSLHonorCipherOrder On
SSLCompression off
SSLCertificateFile /etc/apache2/ssl/example.com.crt
SSLCertificateKeyFile /etc/apache2/ssl/private/example.com.key
<Directory "/var/www/html">
AllowOverride All
Options -Indexes +FollowSymLinks
Require all granted
</Directory>
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</VirtualHost>
答案1
我已解决问题。以下是发生的情况。/etc/apache2/apache2.conf 包含对在 /etc/apache2/sites-enabled 中具有符号链接的任何配置文件的调用。由于该目录中有一个指向 /etc/apache2/sites-available/000-default.conf 的符号链接,因此后一个配置文件正在加载,并且它正在覆盖我的 vhosts.conf 文件中的块和指令。一旦我删除该符号链接,我的 vhosts.conf 设置就可以生效。对我来说,教训是,任何在 sites-enabled 中具有符号链接的文件都将被启用。