WordPressあれこれ

常時SSL化に失敗してログインできない時の対処法

WPリダイレクトループの原因

SSL化の手順を間違えてログインできなくなった

先日、お客様より、レンタルサーバーでSSL申請する前「WordPressアドレス」と「サイトアドレス」を、http:// から https:// に変更してしまいログインできなくなったため、何とかして欲しいというご相談を受けました。

ブラウザでサイトにアクセスしたところ、「ERR_TOO_MANY_REDIRECTS」が表示されておりました。

このエラーは一般的にWordPressサイトの設定変更後、またはサーバー上のリダイレクトの設定ミスを理由に発生します。

いわゆるリダイレクトループというものです。

当初、「WordPressアドレス」と「サイトアドレス」を修正すれば解決すると思っていました。

しかし、うまく行かず試行錯誤することに・・・その過程で新しい発見や学びがあり、備忘のため、まとめておくことにしました。

リダイレクトループ時の対応方法

GoogleでもMozillaでも、「クッキーを消去してみてください」という推進事項がエラーの直下に表示されます。

クッキーには、ERR_TOO_MANY_REDIRECTSエラーの原因となるデータが含まれていることがあります。

この対策は自分のウェブサイトだけでなく、どのウェブサイトでも行うことができます。

クッキーがすべてのウェブサイトの「ログイン」状況またはその他の設定の情報を保持しているため、不具合が発生しているウェブサイトのみでクッキーを消去した方がよいでしょう。

そうすると、頻繁に訪れる他のウェブサイトには影響しません。

Google Chromeで特定のウェブサイトのクッキーを消去するには、下記リンクの手順に従ってください。

 

WordPressサイト、レンタルサーバーのキャッシュをクリアする

リダイレクトループはキャッシュ可能なレスポンスであるため、WordPressサイト、サーバー、サードパーティプロキシサービス、必要に応じてブラウザのキャッシュをクリアした方がよいでしょう。

WordPressウェブサイトのキャッシュをクリアする

リダイレクトループの種類により、WordPress管理画面にアクセスできる可能性があります。

アクセスできる場合には、キャッシングプラグインの設定画面で簡単にキャッシュをクリアすることができます。

人気プラグインのそれぞれでWordPressのキャッシュをクリアする方法については下記をご参照ください。

レンタルサーバーのキャッシュをクリアする

レンタルサーバーの多くは、WordPressサイトのキャッシュをクリアできる独自のコントロールパネルツールがあります。

WEB先案内ではXサーバーをよく使っているので、参考までにブラウザキャッシュの設定方法をご紹介します。

 

リダイレクトループの原因を特定する

キャッシュをクリアしてもリダイレクトループが消えない場合は、リダイレクトループの原因を特定する必要があります。

無料のオンラインRedirect Checkerは不具合の分析ができます。なお、分析はcURLを介して行うこともできます。

すべてのリダイレクトを確認することにより、ループバックするか、HTTPからHTTPSへのリダイレクトのループか、を判断できます。

Google Chromeの拡張機能「Redirect Path」は、ウェブサイトのすべてのリダイレクト(特定のURLまたはページ)についての情報を提供するため、非常に便利です。

HTTPS設定を確認する

次に確認するのはHTTPSの設定です。ERR_TOO_MANY_REDIRECTSが発生するのは、WordPressウェブサイトをHTTPSに移行した直後に発生するのはよくある話です。
原因は不十分な設定または設定ミスです。

1. SSL証明書なしでHTTPSを強制しないこと

SSL証明書なしでHTTPSを強制することは本エラーの最も一般的な原因です。

SSL証明書をインストールせずに、WordPressウェブサイトをHTTPS経由で読み込まれるようにすると、ウェブサイトがリダイレクトループに入ってしまいます。

対策は単にSSL証明書をインストールすることです。

また、SSLチェックを実行することもお勧めします。

SSL/TLS証明書には、メイン証明書だけでなく、中間証明書もインストールし、適切に設定する必要があります。

Qualys SSL Labsの無料SSLチェックツールを使用することをお勧めします。

信頼性が非常に高い為、証明書を検証するときにすべてのお客様を対象にこのツールを使用します。

SSLチェックツールにアクセスし、「ホストネーム」フィールドにドメインを入力し、「送信」をクリックするだけです。必要に応じてパブリックな結果を非表示にすることもできます。

ウェブサーバー上のサイトのSSL/TLSコンフィギュレーションをスキャンするのに1〜2分かかることがあります。

SSLテスト

2. SSLプラグインを使用しないで、ハードコードされたリンクを更新すること

Really Simple SSLなどのHTTPSを自動的にリダイレクトする無料のSSL WordPressプラグインがあります。

ただし、サードパーティプラグインを利用すると、常に課題または互換性問題が生じる可能性があるため、この方法を応急処置としない方がいいです。

一時対策として使用してもいいですが、必ずハードコードされたHTTPリンクを更新する必要があります

3. サーバー上のHTTPからHTTPSへのリダイレクトを確認する

おそらく、サーバー上のHTTPSリダイレクトルールが誤って構成されている可能性があります。

NginxでHTTPをHTTPSにリダイレクトする

ウェブサーバーがNginxを使用している場合、Nginxの設定ファイルに次のコードを追加することにより、すべてのHTTPトラフィックをHTTPSに簡単にリダイレクトできます。

Nginxで動作するWordPressをリダイレクトするために推奨される方法です。

server { listen 80; server_name domain.com www.domain.com; return 301 https://domain.com$request_uri; }

 

ApacheでHTTPをHTTPSにリダイレクトする

WebサーバーがApacheを使用している場合、.htaccessファイルに次のコードを追加することにより、すべてのHTTPトラフィックをHTTPSに簡単にリダイレクトできます。

Apacheで動作するWordPressをリダイレクトするために推奨される方法です。

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

WordPressウェブサイトの設定を確認する

次に、WordPressウェブサイトの一般設定を確認します。

間違ったドメインを指しておらず、不一致がないかを検証するのに、2つの項目を確認する必要があります。

ウェブサイトに適切な(wwwまたは非www)プレフィックスを使用していないことはよくある不具合原因です。

ユーザーがホストまたはドメインを切り替えて、本項目が変更した認識がないことがあります。

  • 「WordPressアドレス(URL)」:ブログへのアクセスができるアドレス
  • 「サイトアドレス(URL)」: WordPressのコアファイルへのアクセスができるアドレス

WordPressの独特なディレクトリを与えていない限り、上記の2つが一致するはずです。

WordPressアドレス

ただし、エラー時にはWordPressのダッシュボードにアクセスできない可能性があります。

そこで、wp-config.phpに値を入力し、上記の設定を上書きすることができます。

wp-config.phpは通常WordPressウェブサイトのルートにあり、FTP、SSH、WP-CLI経由でアクセスできます。

WP_HOMEとWP_SITEURLをハードコーディングするには、次のコードを入力し、正しいドメインを反映するように値を変更します。

define('WP_HOME','https://yourdomain.com');
define('WP_SITEURL','https://yourdomain.com');

 

手動設定ができたら、ウェブサイトに戻り、リダイレクトループが回復しているか確認できます。

マルチサイト

マルチサイトでドメインを変更する場合は、必ずwp_blogsテーブルも確認してください。

検索と置換を誤って行うと、ネットワークサイトがサブサイトと一致しないため、無限のリダイレクトループが発生する場合もあります。

wp_#_options:各サブサイトには、wp_blogsテーブルのblog_idに対応する一連のテーブルがあります。#がblog_idに対応するwp_#_optionsテーブルにアクセスし、そのテーブルの「SITEURL」と「HOME」の設定を更新します。

サーバーのリダイレクトを確認する

サーバーのHTTPからHTTPSへのリダイレクトのほかに、設定が間違っているリダイレクトがないかを確認した方がよいでしょう。

たとえば、転送元と転送先が同じである301リダイレクト1件だけでウェブサイト全体がダウンする恐れがあります。リダイレクトは通常、サーバの設定ファイルにあります。

Apacheの.htaccessファイル

Apacheを採用しているWordPressホストをご利用の場合は、.htaccessファイルに間違ったルールがある可能性があります。次の手順に従って、一から新しいのを作り直してください。

まず、FTPまたはSSH経由でウェブサイトにログインし、.htaccessファイルの名前を.htaccess_oldに変更します。これにより、バックアップが残ります。

※必ずしも「_old」に変更する必要はないです。例えば、「_bk20210627」というようにバックアップした年月日を追記すると運用が効率化されると思います。

.htaccessファイルの名前を変更する

通常、このファイルを再作成するには、WordPressのパーマリンクを再保存するだけです。

ただし、ERR_TOO_MANY_REDIRECTSエラーが発生したときにはWordPressのダッシュボードにアクセスできない為、上記ができません。

したがって、新しい.htaccessファイルを作成し、次の内容を入力し、サーバーにアップロードする必要があります。以下は、デフォルト設定のままです。

# BEGIN WordPress

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

# END WordPress

マルチサイト用のデフォルトの.htaccessファイルなど、その他の例については、WordPress Codexをご参照ください。

\切り札/wp-config.phpに追記

前項までの対策ではどうにもならず、苦戦していたところで発見したのが、そのやり方は次に説明するwp-config.phpを編集して強制的にSSLを有効化してしまう方法です。

PHPを編集される前にバックアップされることをオススメします。

オススメなプラグイン「All-in-One WP Migration

まず wp-config.php を開きます。

このファイルは、wp-content、wp-includes、wp-adminと同じ階層にあります。

次に下記のPHPコードを追記します。

/* --------------------------------------------------
	HTTPSを正しく有効化
----------------------------------------------------- */
define('FORCE_SSL_ADMIN', true);
if ( ! empty( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) 
     && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https' ) 
{
    $_SERVER['HTTPS']='on';
}

これを追加して保存すればOK

ただし追加場所は最初だと反映されません。

確実にHTTPS強制を有効化するなら、次の “開発者へ~” の後に追加するのがベストですね。

/**
 * 開発者へ: WordPress デバッグモード
 *
 * この値を true にすると、開発中に注意 (notice) を表示します。
 * テーマおよびプラグインの開発者には、その開発環境においてこの WP_DEBUG を使用することを強く推奨します。
 */
define('WP_DEBUG', false);

【ここに先ほどのコード追加】 

/* 編集が必要なのはここまでです ! WordPress でブログをお楽しみください。 */

もし “開発者へ~” のメッセージがない場合は define('WP_DEBUG', false); の行を探し、その後に追加してもOKです。

今回のまとめ

いろいろ説明してきましたが、手っ取り早い方法は、次のいずれかを試せば高確率で直せます。

もし管理画面でリダイレクトループが出たなら…
  1. インストール済みプラグインの全無効化
  2. wp-config.phpでHTTPS強制を正しく有効化
  3. wp-config.phpにサイト・ホームURL追加

まずはプラグインが原因でないか確認しましょう。

それでダメなら wp-config.php の編集です。

以上、WordPressの管理画面でリダイレクトループの対処法でした。

 

WordPressの保守運用ならWEB先案内!

WordPressでのお困りの不具合等を復旧致します!

ココナラでも提供しております。ココナラだけでも、多数のご依頼を頂いています。またココナラではうれしい五つ星評価(最高評価)も頂いております。

WordPressの作業代行

お見積もりも、もちろん無料です。

日祝・時間を問わず対応しております。お気軽にご相談ください。

こんな不具合を解消しています。

下記のようなエラー復旧のご依頼を頂いています。

    • 『WordPressにログインできない』
    • 『ユーザー名、パスワードがわからなくなった』
    • 『ワードプレスを更新したらおかしくなった』
    • 『XXXX年間ビジターアンケートが表示された』
    • 『ログインしようとしたら画面が真っ白(表示されなくなった)』
    • 『サイトによくわからない文字が表示されている』
    • 『400、500などのエラー表示が出ている』
    • 『ウィジェットやバーが表示されない』
    • 『ページが真っ白、エラーページが表示される』
    • 『プラグインが動かない』
    • 『403エラーが出て、サイトが見れなくなった』
    • 『ホームページが改ざんされてしまった』
    • 『不正なアクセスの検知をした旨のメールが届いた…』
    • 『Fatal error: Uncaught Error:
      Call to undefined function wp_unregister_GLOBALS() 』に関するエラー
    • 『作業はやるので代わりに調べて欲しい』
    • 『調べた内容は本当にできる?』
    • 『詳しい人のアドバイスが欲しいだけ』
    • 『WordPressを始めてみたけどこの後どうすればいいの?』
    • 『インストールしたテーマの使い方がわからない…』
    • 『外観>カスタマイズ』で設定できる内容
    • 『ERR_TOO_MANY_REDIRECTS』に関するエラー
    • 『WordPressのバージョンを上げたらおかしくなった』
    • 『テーマを更新したらデザインが崩れてしまった』
    • 『サーバーを移行したら表示がおかしくなった』
    • 『phpのバージョンを上げたらおかしくなった』
    • 『画像をメディアにアップロードできない』
    • 『サイト内の画像がすべて表示されなくなった』
    • 『ドメインを変更したら表示がおかしくなった』
    • 『サーバー移管SSL化(https)』
    • 『他のブログからの引っ越し(アメーバブログ・他のWordPress等)』
    • 『用途に応じたサーバー選び』

    その他『とにかく助けて欲しい!』など、お気軽にお問い合わせ下さい

    どのようなエラーでも復旧可能?

    下記3点のケースを除けば基本的に復旧は可能です。 復旧出来ない可能性のあるケース

    • 元データ自体が無くなってしまっている
    • サイトを改ざんされてり内部ファイルを書き換えられたり削除されている
    • データを誤って削除してしまい、バックアップが無い場合

     

    バックアップをお持ちではなくともサーバー側で自動的にバックアップを取っている場合があり、復旧出来ることもあります。諦めずまずはお問い合わせ下さい。

    お問い合わせ

    「お見積もり無料です!」

    費用は作業完了後にご納得の上でのお支払です。

    作業の流れ(お見積もり)

    • ご連絡頂く
    • 詳細をお聞きする
    • ログイン情報を頂く
    • サーバー・サイトにログインして状況を確認
    • お見積もり金額の提示
    • 依頼頂くかキャンセルされるかご判断下さい。(ここでキャンセルも可)
    • ご依頼確定となれば作業開始
    • 作業完了
    • サイトの確認をして頂く(問題ないようでしたらお支払いに進む)
    • お支払いのご案内(メールにてご請求の案内)
    • ご依頼・作業終了となります。

    WordPress保守管理します!

    WordPress保守管理(月額)サービスも行っております。

    WEB先案内