Apache 不会将 HTTP 重定向到 HTTPS

Apache 不会将 HTTP 重定向到 HTTPS

当我在浏览器中输入我网站的非 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 中具有符号链接的文件都将被启用。

相关内容