Назад | Перейти на главную страницу

Apache не перенаправляет HTTP на HTTPS

Когда я ввожу URL-адрес своего веб-сайта cms00.example.com без использования SSL в свой браузер, он не перенаправляет https://cms00.example.com. Если я введу адрес HTTP, я увижу сайт, а если введу адрес HTTPS, я увижу сайт. Я просто не могу заставить работать перенаправление с http на https. Я прочитал множество статей о том, как это сделать, и попробовал все предложения, но моя конфигурация все еще не работает. Я использую Apache 2.4.10 на Debian 8, и я впервые работаю с Apache.

Я выполнил эти две команды и убедился, что модули rewrite и 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>

Я решил проблему. Вот что происходит. /etc/apache2/apache2.conf включает вызов любых файлов конфигурации, которые имеют символические ссылки в / etc / apache2 / sites-enabled. Поскольку в этом каталоге была символическая ссылка, указывающая на /etc/apache2/sites-available/000-default.conf, этот последний файл конфигурации загружался, и он переопределял блоки и директивы в моем файле vhosts.conf. Как только я удалил эту символическую ссылку, мои настройки vhosts.conf вступили в силу. Урок для меня заключался в том, что любой файл, имеющий символическую ссылку в разрешенных сайтах, будет включен.