HTML
Apache
HTTP
Web
HTTPS

Apacheでhttpをhttpsに強制リダイレクト

More than 1 year has passed since last update.


はじめに

Apacheでドメインを設定した際に、https://example.com のようにHTTPS通信にすることが多々あると思います。

常時SSLを設定する場合は、HTTP通信が必要ないのですが、過去に http://example.com といったURLで資料を配っている場合のことを考え、httpでアクセスしたユーザーに対し、httpsへリダイレクトさせておくと便利です。

設定ファイル内に書き込むだけなので特に難しいことはないのですが、色々な情報が出回っており、試した方法がことごとく失敗しました。

この方法であれば上手くいくと思いますので、ぜひ参考にしてください。


開発環境


  • CentOS 6.8

  • Apache 2.2.15 (Unix)


設定ファイル

Apacheの設定ファイルが /etc/httpd/conf.d/vhost.conf で行うと想定しています。


/etc/httpd/conf.d/vconf

# http経由をhttps経由にリダイレクト

<VirtualHost *:80>
ServerName example.com:80
RewriteEngine on
RewriteCond %{HTTP_HOST} ^example\.com
RewriteRule ^/(.*)$ https://example.com/$1 [R=301,L]
</VirtualHost>
# httpsの設定
<VirtualHost *:443>
SSLEngine on
SSLProtocol all -SSLv2
SSLCertificateKeyFile /etc/httpd/conf/ssl.key/server.key
SSLCertificateChainFile /etc/httpd/conf/ssl.crt/internal.crt
SSLCertificateFile /etc/httpd/conf/ssl.crt/server.crt
DocumentRoot /var/www/html/example
ServerName example.com:443
CustomLog /var/www/html/example/access.log common
ErrorLog /var/www/html/example/error.log
AddDefaultCharset UTF-8
<Directory "/var/www/html/example/">
Options Indexes FollowSymLinks
</Directory>
</VirtualHost>

ApacheにSSL証明書を導入する部分に関しては、「さくらVPSにSSL証明書を導入しHTTPS通信の構築」にまとめていますので、こちらも参考になるかと思います。

最後に、設定ファイルを変更後、Apacheを再起動して、変更を反映させます。


Apacheの再起動

$ sudo service httpd restart



おまけ

フォローお待ちしています!

サービス紹介

「数学→プログラミング→Webアプリケーション」まで一気に学べる機械学習のマンツーマン家庭教師サービス「キカガク」に興味のある方はお気軽にご連絡ください。