「301 .htaccess 転送」とは?WordPressサイトヘルスの改善表示の意味と仕組み・必要性を分かりやすく解説

「301 .htaccess 転送」とは?WordPressサイトヘルスの改善表示の意味と仕組み・必要性を解説 アイキャッチ画像

WordPressの管理画面にある「ツール > サイトヘルス」を確認した際、改善項目やステータスの欄に「301 .htaccess 転送」や「The 301 redirect with .htaccess to HTTPS is now enabled」といった英語まじりの表示が出てきて、「これはエラーなの?」「そもそも301転送や .htaccess とは何をする仕組みなの?」と戸惑った経験はないでしょうか。

結論から言うと、「301 .htaccess 転送」とは、暗号化されていない古いURL(http://)へアクセスしてきた訪問者や検索エンジンを、サーバーの入口にある設定ファイル(.htaccess)を使って安全な暗号化通信のURL(https://)へ恒久的に自動案内する仕組みのことです。そして「The 301 redirect with .htaccess to HTTPS is now enabled」と表示されていれば、その設定が正常に有効化されている(問題ない状態である)ことを示しています。

本記事では、「301転送(301リダイレクト)」と「.htaccess」の基本的な仕組みから、WordPress(PHP)による転送ではなく .htaccess 転送が必要とされる3つの理由、サイトヘルスのメッセージごとの対処法、手動で設定・確認する際の手順と注意点まで図解を交えて分かりやすく解説します。

あわせて読みたい(SSL通信の基礎とサイトヘルスの見方)

HTTPS化に欠かせないSSL証明書の仕組みについては「SSLとは?独自SSLと共有SSLの違い・仕組み・サーバー管理画面の見方を図解で解説」、WordPressのサイトヘルス画面の基本的な使い方については「WordPressとPHPのバージョンを確認する方法|管理画面「サイトヘルス」の見方を詳しく解説」もあわせてご覧ください。

301転送(301リダイレクト)とは?「恒久的な引っ越し届」の仕組み

まず「301転送(301リダイレクト)」の「301」とは、Webサーバーがブラウザや検索エンジンに対して返すHTTPステータスコード「301 Moved Permanently(恒久的な移転)」を意味します。

日常生活に例えるなら、301転送は「郵便局に出す恒久的な転居届(引っ越し届)」と同じ役割を果たします。サイトのSSL化(HTTPS化)を行った際、昔のブックマークや外部サイトのリンクから古い住所(http://example.com/)を訪ねてきた人がいても、サーバーが「このサイトは https://example.com/ へ引っ越しました」と自動的に新しい住所へ案内してくれます。

301転送(恒久的なリダイレクト)の仕組みと302転送(一時的なリダイレクト)との違いを比較した図解イラスト
301転送は「恒久的な引っ越し」を意味し、訪問者を自動案内するだけでなく検索エンジンの評価も新しいHTTPS側のURLへ引き継ぐ

301転送と302転送(一時的な転送)の違い

リダイレクトには「301」のほかに「302(Found / Moved Temporarily)」というコードもありますが、常時SSL化(HTTPからHTTPSへの移行)では必ず「301転送」を使用します。両者の違いは以下の通りです。

転送の種類 意味(ステータス) 検索エンジン(SEO)の扱い 主な利用場面
301転送(301リダイレクト) 恒久的な移転
(ずっと新URLを使う)
検索順位や被リンクの評価を新しいURL(HTTPS)へ引き継ぐ 常時SSL化(http→https)、ドメイン変更、URL構造の統合
302転送(302リダイレクト) 一時的な移転
(いずれ元URLへ戻す)
検索結果の登録や評価は元のURLに残す傾向がある メンテナンス画面への一時誘導、期間限定キャンペーン、A/Bテスト

Webサイトを一度HTTPS化したら、元の暗号化されていないHTTPへ戻すことはありません。そのため、Googleなどの検索エンジンに「今後はすべて https:// を正式なURLとして評価してください」と正しく伝えるために301転送が用いられます。

なぜ「.htaccess」による301転送が必要なのか?WordPress転送との違い

サイトヘルスで「301 .htaccess 転送」が改善項目として表示される最大の理由は、「WordPress(PHP)による転送」と「.htaccess(Webサーバー)による転送」では、処理される場所とスピードが大きく異なるからです。

WordPress(PHP)による301転送と.htaccess(サーバー入口)による301転送の仕組みの違いを比較した図解イラスト
WordPress(PHP)転送は建物の奥まで入ってから案内するのに対し、.htaccess転送は建物の入口(Webサーバー)で即座にHTTPSへ案内する

WordPress(PHP)転送は「建物の奥まで入ってから案内する」状態

WordPress本体やSSL化プラグイン(Really Simple Security / 旧Really Simple SSLなど)には、.htaccess ファイルを書き換えなくてもPHPのプログラム処理(wp_redirect() など)を使って http:// から https:// へ転送する機能が備わっています。

しかし、この方式では http:// へのアクセスが来るたびに、一度PHPを起動し、WordPressのコアファイルやデータベースを読み込んでから「HTTPSへ移動してください」という応答を返すことになります。いわば、マンションの入口で案内すれば済むものを、わざわざエレベーターで最上階の部屋まで上がってもらってから「新しい住所はこちらです」と伝えているような状態であり、サーバーのCPU・メモリを余計に消費してしまいます。

.htaccess 転送は「サーバーの入口(玄関)で即座に案内する」仕組み

一方、.htaccess(エイチティーアクセス)とは、エックスサーバーやConoHa WING、ロリポップ!など多くのレンタルサーバー(ApacheやLiteSpeed環境)で使われているWebサーバー用の設定ファイルです。

.htaccess に301転送ルールを記述しておくと、訪問者が http:// でアクセスしてきた瞬間に、WordPress(PHPやデータベース)を一切起動することなく、Webサーバーの入口で直ちに https:// へ転送してくれます。処理が数ミリ秒で完了するため、サイトヘルスやセキュリティプラグインでは「PHPによる転送よりも .htaccess による301転送を有効化すること」が強く推奨されています。

「301 .htaccess 転送」を有効にする3つのメリットと必要性

.htaccess による301転送を設定しておくことで、ブログやWebサイトの運営において次の3つの大きなメリットが得られます。

301 .htaccess 転送を有効にすることで得られる3つのメリット(表示速度の向上・SEO評価の集約・安全性の強化)の図解イラスト
高速なレスポンス、SEO評価の一本化(URL正規化)、画像直リンク等を含む通信の暗号化を同時に実現できる

メリット1:転送スピードが速くなりサーバー負荷も下がる

前述のとおり、Webサーバーの段階でリダイレクト処理が完結するため、古い http:// のリンクを踏んだ読者がページを開くまでの待ち時間(TTFB:最初の1バイトが届くまでの時間)が短縮されます。また、検索エンジンのクローラーやボットが http:// 側へ大量にアクセスしてきた場合でも、PHPやMySQLデータベースに負荷がかからないため、サイト全体の安定性が向上します。

メリット2:SEO評価の分散を防ぎ「https://」へ一本化できる

もしリダイレクトを設定せず、http://example.com/post-1/ と https://example.com/post-1/ の両方で同じ記事が表示される状態を放置してしまうと、検索エンジンから「同じ内容のページが2つ存在する(重複コンテンツ)」と判定され、せっかく獲得した被リンクや検索評価が2つに割れてしまう恐れがあります。

.htaccess で301転送を行えば、すべての http:// アクセスが24時間365日ブレることなく https:// へ統合(URL正規化)されるため、これまで積み上げてきたSEO評価を無駄なく引き継ぐことができます。

メリット3:画像やPDFファイルへの直接アクセスもHTTPSで保護できる

WordPress(PHP)による転送は、基本的にWordPressが生成するページ(投稿や固定ページなど)にしか働きません。そのため、wp-content/uploads/ 内の画像ファイルやPDF資料などに http:// で直接アクセスされた場合、暗号化されないまま通信が行われてしまうケースがあります。

.htaccess による転送であれば、サーバー上のディレクトリ全体に対してルールが適用されるため、画像や静的ファイルを含めたあらゆる通信を漏れなくHTTPSへ誘導できます。

サイトヘルスのメッセージの意味と状況別の対処法

ここで、実際にWordPressの「サイトヘルス」やプラグイン(Really Simple Security / Really Simple SSLなど)の設定画面に表示されるメッセージの意味と、それぞれの場合にどう対応すればよいかを整理しましょう。

WordPressサイトヘルスの301 .htaccess 転送に関するメッセージの意味(改善項目に出る時・now enabled表示・編集時の注意点)の図解イラスト
「is now enabled」と表示されていれば設定完了のサインであり、未有効の警告が出ている場合のみ設定をオンにする

「The 301 redirect with .htaccess to HTTPS is now enabled」と出ている場合

意味:「.htaccess による HTTPS への 301 転送が現在有効になっています」

この英文が表示されている場合は、すでに理想的な設定が完了している(合格・良好のステータス)という意味です。エラーや不具合ではなく、「サイトヘルスの改善項目にあった .htaccess 301転送が正しく有効化されましたよ」という完了報告ですので、追加で何か作業を行う必要はありません。そのまま安心してサイト運営を続けて大丈夫です。

改善項目に「301 .htaccess 転送(We recommend to enable a 301 .htaccess redirect)」が出ている場合

意味:「現在はWordPress側の転送のみのため、.htaccess による301転送の有効化を推奨します」

サイトヘルスの「おすすめの改善」にこの項目が残っている場合は、まだ .htaccess にHTTPS転送ルールが書き込まれていない(またはプラグイン側でオフになっている)状態です。以下の「プラグインから有効化する手順」または「.htaccessへ直接記述する手順」のいずれかで有効化しておきましょう。

「301 .htaccess 転送」を有効化する手順と標準コード

改善項目を解消して .htaccess 転送を有効化する方法は、「プラグインのスイッチで自動設定する方法」と「サーバー管理画面・FTPから .htaccess に手動で記述する方法」の2通りがあります。

方法A:プラグイン(Really Simple Security等)の設定から有効化する

「Really Simple Security(旧 Really Simple SSL)」を使用している場合は、管理画面から数クリックで有効化できます。

  • 設定画面を開く:WordPress管理画面の「設定 > SSL(または Security)」を開きます。
  • リダイレクト設定を変更する:「設定(Settings) > 一般(General)」内の「リダイレクト(Redirect)」項目にあるプルダウンで、「301 .htaccess 転送(301 .htaccess redirect)」を選択して保存します。
  • サイトヘルスを再確認する:保存後に「The 301 redirect with .htaccess to HTTPS is now enabled」と表示され、サイトヘルスの改善項目から消えていれば完了です。

方法B:.htaccess ファイルへ直接301転送ルールを記述する

プラグインを使わずにシンプルに運用したい場合や、レンタルサーバーの「.htaccess編集」メニューから手動で設定する場合は、WordPressがインストールされている階層(wp-config.php と同じ場所)にある .htaccess ファイルの先頭側(# BEGIN WordPress よりも上の行)に以下のコードを記述します。

# HTTPからHTTPSへの301リダイレクト設定(# BEGIN WordPress より上に記述)
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>

# BEGIN WordPress
# (これより下はWordPress標準の記述が続く)

各行が何をしているのか(コードの意味)

  • RewriteEngine On:WebサーバーのURL書き換え・転送機能(mod_rewrite)を有効にします。
  • RewriteCond %{HTTPS} off:「もし通信がHTTPSではない(=http:// でアクセスされた)場合」という条件を指定します。
  • RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]:アクセスされたドメイン名(%{HTTP_HOST})とページパス(%{REQUEST_URI})をそのまま維持した状態で、先頭を https:// に変えて「301転送(R=301)」を実行し、そこでルール判定を終了(L)します。

設定時に気をつけたい3つの注意点

  • 編集前に必ず .htaccess のバックアップを保存する:.htaccess は1文字でもスペルミスや全角スペースが混入すると、サイト全体が「500 Internal Server Error」で真っ白になってしまいます。編集前に元のテキストをメモ帳などにコピーして控えを取っておけば、万が一の際もすぐに元へ戻せます。
  • 必ず「# BEGIN WordPress」よりも上に書く:WordPress標準のルール(# BEGIN WordPress 〜 # END WordPress)の中には「該当するファイルがなければすべて index.php へ渡す」という終了ルールが含まれています。そのため、それより下にリダイレクトを書いても無視されてしまいます。必ず先頭側に配置してください。
  • Cloudflareやリバースプロキシ利用時のリダイレクトループに注意する:CloudflareのFlexible SSLや一部のプロキシ環境では、サーバー側との通信が内部的にHTTPになるため RewriteCond %{HTTPS} off だけでは無限に転送を繰り返す「リダイレクトループ(ERR_TOO_MANY_REDIRECTS)」が起きることがあります。その場合はCloudflareの暗号化モードを「Full(厳密)」にするか、RewriteCond %{HTTP:X-Forwarded-Proto} !https を併用します。

まとめ

WordPressのサイトヘルスに表示される「301 .htaccess 転送」および「The 301 redirect with .htaccess to HTTPS is now enabled」の意味と、その仕組み・必要性について解説しました。最後に本記事のポイントを振り返ります。

本記事のポイントまとめ

  • 301転送(301リダイレクト)とは:古いURL(http://)から新しいURL(https://)への「恒久的な引っ越し届」であり、訪問者を自動誘導するとともに検索エンジンのSEO評価を引き継ぐ仕組み。
  • .htaccess 転送が必要な理由:WordPress(PHP)による転送よりも手前の「Webサーバーの入口」で即座に転送できるため、表示速度の向上・サーバー負荷の軽減・全ファイルのHTTPS保護に優れている。
  • 「is now enabled」の表示は正常完了のサイン:The 301 redirect with .htaccess to HTTPS is now enabled と表示されていれば、すでに .htaccess による301転送が有効になっているため追加作業は不要。
  • 手動編集時はバックアップと記述位置を確認:手動で .htaccess に追記する場合は、事前にバックアップを取ったうえで必ず # BEGIN WordPress よりも上の行に記述する。

サイトヘルスに英語の通知が出ると一瞬ドキッとしてしまいますが、仕組みが分かればサイトの表示速度とセキュリティを同時に高めてくれる心強い機能です。もし改善項目に「301 .htaccess 転送」が残っている場合は設定を有効化し、すでに「now enabled」になっている場合はそのまま安心してブログ運営を進めてみてください。


eguchi.netをもっと見る

購読すると最新の投稿がメールで送信されます。