SSL化は現在、WEBサイトには必須の設定になっていますが、さくらサーバやエックスサーバなどではSSL化をしても、httpとhttpsの両方でアクセスしてみると、どちらにもアクセスできる状態になっていることがあります。
※バージョンの違いによるものか、毎回同じ事象になるわけではないようです
そこで、httpから始まるURLでアクセスされたときに、httpsから始まるURLにリダイレクト(転送)する必要があるので、その方法についてこの記事では解説します。
サイト全体で“http”から“https”にリダイレクトする方法
基本的にリダイレクト設定は“.htaccessファイル”を利用した“301リダイレクト”によって対応します。
サーバのファイルエディタ機能を使って、WEBサイトのルートディレクトリにある.htaccessファイルをエディタで開きます。ファイルが見つからない場合は、新しく作成することができます。

以下のコードを.htaccessファイルに追加します。このコードは、すべてのHTTPリクエストをHTTPSにリダイレクトします。
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteEngine On
は、Apacheの書き換えエンジンを有効にします。RewriteCond %{HTTPS} off
は、HTTPSが無効(つまりHTTP接続である)場合にのみ後続のルールが適用されることを意味します。RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
は、URIの開始(^
)にマッチ(すなわちすべてのリクエストにマッチ)して全リクエストをHTTPSプロトコルを使用するURLにリダイレクトします。実際のリクエストパスやクエリ文字列は%{REQUEST_URI}
で保持されます。リダイレクトは永続的(ステータスコード301)で、ルールの処理をその時点で終了します([L]
フラグ)。
変更を保存した後、WEBサイトにHTTPから始まるURLでアクセスしてHTTPからHTTPSへのリダイレクトが正しく機能しているかを確認します。
サイト内の一部で“http”から“https”にリダイレクトする方法
次に、サイトの一部分のみを指定して“https”に対応する場合のリダイレクト方法について解説します。
サイト内の特定の部分だけを別の場所に移行する場合の.htaccess
を使用したリダイレクトルールの書き方は以下のようになります。ここでは、具体例として、旧URLの特定のパスから新URLのパスへのリダイレクトを設定する方法を説明します。
特定のページのリダイレクト
旧ページから新ページへのリダイレクトを設定するには、以下のように書きます。
apache Redirect 301 /oldpage.html /newpage.html
この例では、/oldpage.html
へのアクセスを /newpage.html
にリダイレクトします。
ディレクトリ全体のリダイレクト
あるディレクトリから別のディレクトリへのリダイレクトを設定するには、以下のように書きます。
apache Redirect 301 /old-directory/ /new-directory/
この例では、/old-directory/
内の全てのファイルが /new-directory/
にリダイレクトされます。
より複雑なリダイレクト(mod_rewriteを使用)
mod_rewriteを使用したより複雑なリダイレクトを行う場合は、以下のようになります。
RewriteEngine On
RewriteRule ^old-directory/(.*)$ /new-directory/$1 [R=301,L]
このルールは、old-directory
内のすべてのファイルを new-directory
にリダイレクトします。(.*)$
は old-directory
内の任意のファイルやサブディレクトリにマッチし、$1
はそのマッチした部分を表します。
注意点
- リダイレクトルールを適用した後は、必ずテストを行い、想定通りにリダイレクトされるか確認してください。
- 301ステータスコードは「永続的なリダイレクト」を意味し、検索エンジンに対してもページが移動したことを伝えます。これはSEOに影響しますので、適切な場面で使用してください。一時的にリダイレクトする場合には302リダイレクトを利用します。
- Apacheの設定で
mod_rewrite
モジュールが有効になっている必要があります。すべてのホスティング環境でデフォルトで有効化されているわけではありません。
.htaccessファイルとは?
.htaccess
ファイルは、Apacheウェブサーバーで使用される強力な設定ファイルです。このファイルを用いることで、サーバー全体の設定を変更することなく、個別のディレクトリやウェブサイトに対して特定の設定を行うことができます。.htaccess
ファイルによる設定は、そのファイルが存在するディレクトリおよびそのサブディレクトリに適用されます。
主な機能と用途
URLの書き換えとリダイレクト
URLを書き換えたり、特定のページから別のページへリダイレクトさせることができます。ウェブサイトの構造を変更したときや、HTTPからHTTPSへの自動リダイレクトを設定するときに役立ちます。
アクセス制御
特定のIPアドレスからのアクセスを制限したり、パスワードで保護されたディレクトリを作成することができます。
カスタムエラーページ
エラーが発生したときに表示されるページをカスタマイズできます。例えば、404エラー(ページが見つからない)の際に特定のエラーページを表示するよう設定できます。
パフォーマンスの最適化
ファイルの圧縮やキャッシュ設定などを通じて、ウェブサイトのロード時間を短縮する設定を行うことができます。
MIMEタイプの設定
サーバーに対して、特定のファイル拡張子を持つファイルをどのように処理するかを指示することができます。
注意点
- セキュリティ:
.htaccess
ファイルは非常に強力であるため、誤った設定はウェブサイトのセキュリティやアクセシビリティに悪影響を及ぼす可能性があります。 - パフォーマンス:
.htaccess
ファイルは、サーバーがリクエストを受けるたびに読み込まれます。不必要に複雑な設定はパフォーマンスに影響を与えることがあります。 - サーバー設定: すべてのサーバーが
.htaccess
ファイルの使用を許可しているわけではありません。サーバーの設定によっては、.htaccess
ファイルが無視されることもあります。
まとめ
この記事では、ウェブサイトをHTTPからHTTPSへリダイレクトする方法と、その際の注意点について詳しく説明しました。HTTPSへのリダイレクトは、.htaccess
を用いることで比較的カンタンに実現できますが、正しくリダイレクトを行わないと、ウェブサイトの検索エンジンにおける評価が損なわれ、結果として訪問者数が大幅に減少する恐れがありますので、設定後は確実にテストを行ってください。
SSL化は、検索ユーザーにとって信頼できるサイトを構築する上で非常に重要です。この記事を通じて、安全なHTTPSへの移行方法を理解し、ユーザーフレンドリーなウェブサイトを実現しましょう。