Apacheを使用してすべてのトラフィックをhttpからhttpsにリダイレクトする方法
もしあなたのウェブサイトがApacheとSSLを使用しているなら、ウェブサイトでHTTPを使い続ける理由はほとんどありません。HTTPとHTTPSの両方を持つことは重複コンテンツを生み出すだけであり、あるページは今や技術的に異なる二つのURLを通じてアクセス可能になります。
このガイドでは、あなたがすでにLinuxシステム上でApacheを使用していると仮定し、すべてのHTTPトラフィックをHTTPSにリダイレクトしたいと思います。これにより、すべての訪問者がHTTPリンクを開いた場合でも、安全なプロトコルにブラウザを強制することで、HTTPSを通じてのみ接続されることが保証されます。ユーザーがリンクの前にhttp://を付け加えた場合でも、あなたのサイトは重複コンテンツを表示したり、404エラーを示すのではなく、正しいページに送信する賢さを備えています。
Apacheでこのリダイレクションを設定する方法は2つあります。より良い方法はバーチャルホストを設定することですが、ホスティングされたウェブサイトのユーザーはこの設定にアクセスできない場合があります。2つ目の方法は.htaccessファイルにいくつかの変更を加えることです。以下では、両方の方法の手順を詳しく説明します。それでは始めましょう。
このチュートリアルでは、あなたは学びます:
- HTTPをHTTPSにリダイレクトする方法とバーチャルホスト
.htaccessファイルを使用してHTTPをHTTPSにリダイレクトする方法
ApacheでHTTPトラフィックをHTTPSにリダイレクトする
仮想ホストを使用してHTTPをHTTPSにリダイレクトする
Ubuntu、Debian、及びその派生版では、仮想ホストファイルは/etc/apache2/sites-availableにあります。お好みのテキストエディタで適切なファイルを開いてください:
sudo vi /etc/apache2/sites-available/example.conf
RedHat、CentOS、Fedora、およびその他の派生ディストリビューションでは、仮想ホストの設定は次の場所にあります:
sudo vi /etc/httpd/conf.d
このファイルは、他にも多くのことの中でトラフィックをリダイレクトするために使用できます。あなたのウェブサイトですでにHTTPとHTTPSを使用している場合、ファイルには少なくとも2つの仮想ホストが必要です - 1つは80(HTTP)用、もう1つは443(HTTPS)用です。HTTPトラフィックをリダイレクトするには、次の行を追加する必要があります。
Redirect permanent / https://example.com/
<VirtualHost *:80>の見出しの中に、以下の例のようにどこかに追加してください:
HTTPトラフィックがHTTPSにリダイレクトされる例のバーチャルホスト構成
変更を保存し、このファイルを終了してください。変更が反映されるためには、以下のsystemctlコマンドを使用してApacheの設定を再読み込みする必要があります。
sudo systemctl reload apache2 # Debian, Ubuntu
OR
sudo systemctl reload httpd # Red Hat, CentOS, Fedora
.htaccessファイルを使用してHTTPをHTTPSにリダイレクトする
もしバーチャルホストの設定にアクセスできない場合、.htaccessファイルが唯一の選択肢になります。それは、あなたのウェブサイトのルートディレクトリにあり、使用しているウェブホストに関係なくアクセス可能なはずです。
このファイルを簡単に編集し、以下のコード行を追加してください。ファイルの一番下にそのまま貼り付けることができます。
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://example.com/$1 [L,R=301]
それが全てです。ウェブサイトに移動すると、変更が瞬時に反映されるはずです。Apacheを再読み込みする必要はありませんので、その変更が有効になるのです。
締めくくりの考え
HTTPSは確実に進むべき道です。この記事では、すべてのトラフィックをHTTPSにリダイレクトし、HTTPを完全に排除することがいかに簡単であるかを見てきました。これらのいずれの方法も、あなたのウェブサイトでHTTPトラフィックをHTTPSに強制するための有効な手段です。
