ブログ初心者・Web制作の情報サイト
httpから httpsへリダイレクトする方法

httpから httpsへリダイレクトする方法

SSL化の後にするべきはhttpsへの301リダイレクト設定です。この設定をしておかないと検索エンジンの評価がhttpとhttps 2つのページに分散してしまい正当な評価を得ることができません

同じ内容のページが2つもインデックスされるのは重複の問題が発生することもあり嫌ですよね。

この記事では httpから httpsへ301リダイレクトする方法を紹介します。検索エンジンからの評価の分散を避けるためにもリダイレクト設定を行っておきましょう。

httpから https へのリダイレクト

httpから httpsへリダイレクトするためには .htaccessを使用します。使用するリダイレクトは301リダイレクトです。

.htaccessとはディレクトリごとにサーバー設定を変更するファイルでサーバー上に置かれています。WordPressであればWordPressをインストールしたディレクトリにあります。もしなければ作成してください。

htaccessとは? 何に使うの?
サーバーを使っていると .htaccessという言葉を聞いたことがあると思います。設定ファイルということは分かるけど具体的な内容は分からないという人に .htaccessについての説明と使用用途を紹介します。

次のコードを.htaccessの一番上に追加してください。WordPressだと「BEGIN WordPress」の上です。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>

これでhttpのページにアクセスがあった場合、httpsに301リダイレクトされるようになります。

コードの解説

<IfModule mod_rewrite.c> # mod_rewriteが有効な場合のみ処理を行う
# 処理内容

</IfModule>

<IfModule mod_rewrite.c>はサーバーがmod_rewriteに対応している場合に処理を行います。mod_rewriteはURLの書き換え・変更を行うApacheのモジュールです。

mod_rewriteに対応していないサーバーでもエラーが起こらずに済みます。mod_rewriteに対応していないサーバーでは.htaccessを使ったリダイレクト自体が行えません。

WordPressが使えるサーバーのほとんどはmod_rewriteに対応しています。以下は対応しているサーバーの一例です。

  • エックスサーバー
  • ロリポップ
  • カラフルボックス
  • mixhost
  • ConoHa Wing
RewriteEngine On

mod_rewriteの機能を有効にするための宣言です。offと書けば無効になります。

RewriteCond %{HTTPS} off

「httpsが無効のとき」という条件を表しています。

RewriteCondはURL書き換えを行う条件を指定するものです。RewriteCondの条件が満たされる場合、直後に記述されたRewritwRuleが実行されます。

例として「RewriteCond %{HTTP_HOST} ^www\.example\.com$」と書けばwww付きのURLの場合に処理を行うことができます。URLをwwwなしに統一したい場合に使えるでしょう。

RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

URLをhttpsに書き換えています。

[R=301,L] のRはリダイレクトを表します。R=301なら301リダイレクト、R=302なら302リダイレクトです。Lは正規表現パターンマッチしたときURL変換を終了することを意味しています。

参考:SMART URLを書き換える -Rewrite機能

301と302リダイレクトの違い

リダイレクトには301リダイレクトと302リダイレクトの2種類があります。

301リダイレクトと302リダイレクトはそれぞれ用途が異なります。間違った使用は検索結果に悪影響を及ぼす可能性があるため使用する場合は違いを理解しておく必要があります。

以下は301と302リダイレクトの違いをまとめた表です。

項目301リダイレクト302リダイレクト
期間恒久一時的
ユーザー転送する転送する
検索クローラー転送する転送する
被リンク引き継ぐ引き継がない
ブラウザキャッシュ恒久的にキャッシュされるキャッシュされない

独自に転送設定を行う場合、301リダイレクトがブラウザにキャッシュされる点には特に注意してください

301リダイレクトの特徴

301リダイレクトは恒久的なリダイレクトです。古いページを新しいページに置き換えるといった具合です。

301リダイレクトはhttp から httpsへSSL化した場合や過去サイトの被リンクを引き継いでサイトを移転したいときに使用します。

301リダイレクトを使用するべき状況

  • http から httpsへSSL化したとき
  • 過去サイトの被リンクを引き継いでサイトを移転したいとき
  • 類似する内容がある複数のページを1つにまとめたいとき

301リダイレクトは本当に恒久的なリダイレクトです。指定したURLはブラウザにキャッシュされて残り続けます。

301リダイレクトを使用する場合は、指定したURLが間違っていないか事前に確認してください。確認には302リダイレクトが便利です。

302リダイレクトの特徴

302リダイレクトは一時的なリダイレクトで一定の期間だけユーザーと検索クローラーを対象のページへ飛ばします。

302リダイレクトは被リンクを引き継がず検索順位への影響がないため2つのWebサイト間で機能やデザインの確認をしたいといったテスト的な目的で使用できます。

302リダイレクトを使用するべき状況

  • リダイレクトが正常に機能するか確認する場合
  • 一時的に別ページにリダイレクトしてその後、元に戻したいとき

リダイレクトする意味

リダイレクトは検索エンジンの評価分散を避ける意味が非常に強いです。

httpからhttpsへSSL化した場合、httpsのURLにリダイレクトの設定をしておく必要があります。

検索エンジンの評価分散を避ける

検索エンジンはhttpとhttpsのURLは別のページと認識するため2つのURLに対して評価を行います。その結果ページの評価が2つに分かれてしまい検索結果の順位が下がります。

もしhttpとhttpsのURLが均等に評価されたとしてもメインとして使うhttpsは半分の評価しか受け取ることができません。httpsへのリダイレクトの設定をしておくべきです。

SSL化の後は検索エンジンの評価分散を避けるためにもリダイレクト設定を行っておきましょう。