
私のウェブサイトの非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 にシンボリックリンクがあるすべてのファイルが有効になるということです。