ApacheはHTTPをHTTPSにリダイレクトしません

ApacheはHTTPをHTTPSにリダイレクトしません

私のウェブサイトの非SSL URL「cms00.example.com」をブラウザに入力しても、リダイレクトされません。https://cms00.example.comHTTP アドレスを入力するとサイトが表示され、HTTPS アドレスを入力するとサイトが表示されます。http から https へのリダイレクトが機能しません。これを行う方法についての記事を多数読み、すべての提案を試しましたが、私の構成はまだ機能しません。Debian 8 で Apache 2.4.10 を実行していますが、Apache を使用するのは今回が初めてです。

次の 2 つのコマンドを実行し、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>

答え1

問題は解決しました。何が起こっているかを説明します。/etc/apache2/apache2.conf には、/etc/apache2/sites-enabled にシンボリックリンクがあるすべての設定ファイルへの呼び出しが含まれています。そのディレクトリに /etc/apache2/sites-available/000-default.conf を指すシンボリックリンクがあったため、後者の設定ファイルが読み込まれ、vhosts.conf ファイルのブロックとディレクティブが上書きされていました。そのシンボリックリンクを削除すると、vhosts.conf の設定が有効になりました。私にとっての教訓は、sites-enabled にシンボリックリンクがあるすべてのファイルが有効になるということです。

関連情報