こんにちは、みんな !このチュートリアルでは、ApacheHTTPをHTTPSに強制的にリダイレクトする方法を示します
Webサイトの所有者またはシステム管理者の場合、Apacheを定期的に扱っている可能性があります。実行する可能性のある最も一般的なタスクの1つは、HTTPトラフィックをセキュリティで保護された(HTTPS)バージョンのWebサイトにリダイレクトすることです。
要求と応答がプレーンテキストで送受信されるHTTPとは異なり、HTTPSはTLS/SSLを使用してクライアントとサーバー間の通信を暗号化します。
これは2つの異なる方法で確認できます。
私。仮想ホストの使用。
ii。 .htaccessの使用
始めましょう
仮想ホストの使用
仮想ホストディレクティブでは、サイトドキュメントルート(Webサイトファイルを含むディレクトリ)を指定したり、サイトごとに個別のセキュリティポリシーを作成したり、異なるSSL証明書を使用したり、リダイレクトを構成したりできます。
SSL証明書がドメインにインストールされている場合、そのドメインに対して2つの仮想ホストディレクティブがあります。 1つはポート80のサイトのHTTPバージョン用で、もう1つはポート443のHTTPSバージョン用です。
CentOSやFedoraなどのRed-Hatベースのディストリビューションでは、仮想ホストファイルは/etc/httpd/conf.dに保存されます。 DebianおよびUbuntuのようなその派生物では、ファイルは/etc/apache2/sites-available
に保存されます。 ディレクトリ。
ウェブサイトをHTTPSにリダイレクトするには、Redirect
を使用します 「unixcop.com」の例で示されているディレクティブ
<VirtualHost *:80>
ServerName unixcop.com
ServerAlias www.unixcop.com
Redirect permanent / https://unixcop.com/
</VirtualHost>
<VirtualHost *:443>
ServerName unixcop.com
ServerAlias www.unixcop.com
Protocols h2 http/1.1
</VirtualHost>
説明
上記のコードについて説明しましょう
-
VirtualHost *:80
– Apacheサーバーは、指定されたドメインのポート80(HTTP)で着信接続をリッスンします。 -
VirtualHost *:443
– Apacheサーバーは、指定されたドメインのポート443(HTTPS)で着信接続をリッスンします。
ServerName
およびServerAlias
ディレクティブは、仮想ホストのドメイン名を指定しています。必ずドメイン名に置き換えてください。 (この場合はunixcop.com)
強調表示された行、Redirect permanent / https://example.com/
HTTP仮想ホスト内で、トラフィックをHTTPSバージョンのサイトにリダイレクトします。
通常、HTTPSwwwバージョンのサイトをwww以外のバージョンにリダイレクトすることもできます。その逆も同様です。構成例は次のとおりです。
<VirtualHost *:80>
ServerName unixcop.com
ServerAlias www.unixcop.com
Redirect permanent / https://unixcop.com/
</VirtualHost>
<VirtualHost *:443>
ServerName unixcop.com
ServerAlias www.unixcop.com
Protocols h2 http/1.1
<If "%{HTTP_HOST} == 'www.unixcop.com'">
Redirect permanent / https://unixcop.com/
</If>
</VirtualHost>
上記のコードは、リクエストヘッダーにwwwドメインが含まれているかどうかをチェックし、www以外のバージョンにリダイレクトしています。
構成ファイルに変更を加えるときはいつでも、変更を有効にするためにApacheサービスを再起動またはリロードする必要があります
.htaccess
ApacheWebサーバーのディレクトリごとの設定ファイルです。このファイルを使用して、Apacheがファイルが配置されているディレクトリからファイルを提供する方法を定義し、追加機能を有効/無効にすることができます。
通常、.htaccess
ファイルはドメインルートディレクトリに配置されますが、他の.htaccess
を持つことができます サブディレクトリ内のファイル。
このメソッドにはmod_rewrite
が必要です Apacheサーバーにロードされるモジュール。このモジュールは、ほとんどのサーバーにデフォルトでロードされます。可能であれば、仮想ホストでリダイレクトを作成することをお勧めします。これは、よりシンプルで安全だからです。
すべてのHTTPトラフィックをHTTPSにリダイレクトするには、ルート.htaccess
を開きます ファイルに次のコードを追加します
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://unixcop.com/$1 [L,R=301]
説明
-
RewriteEngine On
–書き換え機能を有効にします。 -
RewriteCond %{HTTPS} off
– HTTP接続をチェックし、条件が満たされると、次の行が実行されます。 -
RewriteRule ^(.*)$ https://unixcop.com/$1 [L,R=301]
–ステータスコード301(永続的に移動)でHTTPをHTTPSにリダイレクトします。
以下の例には、リクエストがwww
で始まるかどうかをチェックする追加の条件があります 。これを使用して、すべての訪問者にHTTPS非wwwバージョンのサイトを使用するように強制します
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\.unixcop\.com [NC]
RewriteRule ^(.*)$ https://unixcop.com/$1 [L,R=301]
.htaccess
を編集する場合 ファイルの場合、Apacheはリクエストごとにファイルを読み取るため、サーバーを再起動する必要はありません。
したがって、ApacheにHTTPSを使用させる方法はすでに知っています。
Apacheドキュメント