...

WordPressのリダイレクト・ループの認識と修正 - 原因と解決策

を作る方法を簡潔明瞭に説明しよう。 リダイレクトループ を分析し、確実に解決します。SSLのコンフリクト、.htaccessルールの不具合、不正なサイトURL、キャッシュ/クッキー、プラグインの問題、サーバー設定など、テストと予防を含め、すぐに実現可能な解決策をお見せします。

中心点

以下のリストは、手順を詳しく説明する前に、最も重要な手順をまとめたものである。

  • 原因 素早く絞り込む:SSL、.htaccess、URL、プラグイン、キャッシュ
  • スタンダード-チェック・ルール:.htaccessとwp-config.php
  • HTTPS を正しく設定してください:証明書、混合コンテンツ、HSTS
  • プラグイン ダッシュボードまたはFTPでテスト的にスイッチオフする。
  • 予防 を確立する:バックアップ、文書化、監視

リダイレクト・ループの実際の意味は?

A 転送ループ は、URL AがURL Bにジャンプし、BがAにジャンプして戻る場合、または複数のジャンプが最後に開始アドレスに戻る場合に発生する。ブラウザはERR_TOO_MANY_REDIRECTSでキャンセルし、呼び出しをブロックします。ログインが正しく入力された後にログインフォームが再度読み込まれることで、ループを認識することがよくあります。訪問者にとっては無限ループのように見え、検索エンジンにとっては技術的エラーのように見えます。これは信頼を失い、バックエンドへのログインを妨げ、貴重なクロールの予算を食いつぶしてしまう。

WordPressでループが発生する主な原因

最も頻繁に引き金になるのは 擬似 WordPressのURL、攻撃的な.htaccessルール、二重SSL化、無秩序なプラグインのリダイレクト。古いクッキーやハードブラウザのキャッシュもリクエストを迷わせます。ドメイン変更やHTTPS化後は、httpとhttpsが混在するため、エラーが頻繁に発生します。独自のリダイレクトやセキュリティプラグインを持つテーマでは、ルールが互いにブロックし合うことがあります。まれに、マルウェアが意図的にリダイレクトを設定し、管理者を締め出すこともあります。

ブラウザでクイックテストクッキーとキャッシュ

私はまず クライアント-チェックする。私はクッキーを削除し、影響を受けたドメインのキャッシュ全体を削除します。プライベートウィンドウは古いセッションを除外するのに役立つ。ログインがうまくいけば、サーバーではなくローカルデータが原因であることがわかる。エラーが続く場合は、サーバーとWordPressのレベルを確認する。

.htaccessをチェックし、デフォルトにリセットする。

を確保する。 htaccess で、テストとしてWordPress標準にリセットする。こうして、以前の実験やSEOルールから矛盾するリダイレクトを削除している。

# BEGIN WordPress
RewriteEngineオン
リライトベース
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L].
# END WordPress

すべてが稼働したら、段階的にリダイレクトを追加していく。クリーンな状態については htaccessリダイレクト を実践例とともに紹介する。重要: http→https を決して 2 回実行しないでください。

設定とwp-config.phpでWordPressのURLをカスタマイズする

との乖離 WP_HOME とWP_SITEURLは、特にドメイン移管後、しばしば無限ループを引き起こします。私はまず、設定 > 一般をチェックします。バックエンドにアクセスできない場合は、wp-config.phpの値を簡単に設定します:

define( 'WP_HOME', 'https://deinedomain.de' );
define( 'WP_SITEURL', 'https://deinedomain.de' );

管理者のSSL問題が発生した場合は、一時的にアクセスをブロックすることもある:

define('FORCE_SSL_ADMIN', false);

ダッシュボードに入ったらすぐに正しいURLを設定し、また定数を削除する。標準化されたアドレスは、ループの繰り返しを防ぎます。

HTTPS/SSLの競合をクリーンに解決する

コンフリクトは次のような場合に発生する。 エスエスエル はサーバー側で強制され、プラグインはリダイレクトも設定する。私はまず、証明書が有効かどうか、HSTS やプロキシヘッダーが認識の妨げになっていないかどうかをテストします。そして、https を強制する明確な場所があることを確認します。私は、一貫して、混合コンテンツエラーと不正な転送チェーンを排除しています。実際の切り替え作業では、以下のような手順で行っています。 ワードプレスのHTTPS変換.

エラーの原因となるプラグインやテーマの制限

怪しいスイッチを入れる プラグイン 特にリダイレクト、SEO、セキュリティツール。バックエンドに入れない場合は、FTPでwp-content/pluginsフォルダをplugins.oldにリネームします。その後、エラーが再発するまで、ダッシュボードで各プラグインを個別に有効化する。Twenty Twenty-Fourなどの標準テーマに切り替えると、テーマがルールに貢献しているかどうかも表示される。これによって、すぐに原因を見つけ、競合のない設定を作ることができる。

ログインループをなくすクッキー、セッション、セキュリティ

ログインが正しいにもかかわらず失敗した場合 データ もう一度ジャンプして戻り、クッキーのドメイン、パス、httpsフラグをチェックします。私はすべてのレベルでキャッシュをクリアします:ブラウザ、WordPressキャッシュ、オブジェクトキャッシュ、CDN。セキュリティ・プラグインについては、管理者用URLをリダイレクトするルールやログインを制限するルールをチェックする。診断のために一時的にデフォルトをクリアにしてから、少しずつセキュリティを再構築する。ゴール:重複リダイレクトのない安定したセッション。

リバースプロキシ、CDN、サーバヘッダを正しく設定する

その背後には プロキシ アプリケーションは、Forwarded または X-Forwarded-Proto ヘッダが欠落していたり、正しく届いていなかったりすると、http と https を簡単に混同してしまいます。私はNginx/Apacheの設定、ロードバランサーの設定、CDNの転送をチェックします。WordPressが実際のクライアントURLを正しく認識することが重要です。上流プロキシを使用したセットアップの場合、このガイドが役立ちます。 リバースプロキシの設定.これにより、サーバー、CDN、プラグインの間で矛盾したルールが発生するのを防ぐことができます。

最終的な疑惑の原因としてのマルウェア

すべての修正にもかかわらず、まだループを閉じることができる場合 ない 悪意のあるコードがないか、インストールをスキャンします。コアファイルをオリジナルと比較し、新しい管理者やcronジョブをチェックします。window.location、meta refresh、不明瞭なBase64文字列を検索することで、ヘッダー、テンプレートファイル、JavaScript経由のリダイレクトを明らかにします。クリーンアップの後、パスワードをリセットし、新しいバックアップを作成する。再感染に対するセキュリティは、後で多くの時間を節約する。

日常生活における予防とモニタリング

私は次のようにしてループを防いでいる。 変更点 リダイレクトを一元管理し、本番デプロイ前にステージング環境でテストします。バックアップは自動的に作成し、プラグインやテーマは常に最新の状態に保っています。ドメイン変更後は、サイトのURL、SSL、リダイレクトチェーンをチェックしています。小さな監視システムで、ステータスコードのジャンプを早い段階で通知しています。以下の表は、運用中の迅速な診断に役立ちます。

症状 考えられる原因 直接測定 テストツール
err_too_many_redirects ダブルhttpsの実施 リダイレクト先は1カ所のみ HTTPヘッダーチェック、Curl
ログインが戻る クッキーとセッションの競合 クッキーを削除し、キャッシュを空にする プライベートウィンドウ、DevTools
ホームページが読み込まれない .htaccessループ 標準の.htaccessを有効にする サーバーログ、差分
代理人のみの故障 誤ったプロト・ヘッダー X-Forwarded-Protoを正しく設定する。 プロキシ設定、ヘッダートレース
ランキングから突然 リダイレクト・チェーン 鎖を減らし、301を正す クローラー、スクリーミングフロッグ

リダイレクトを正確に追跡:ヘッダートレースとcurl

コンフィギュレーションを説明する前に、私は次のように書く。 正確なチェーン に移動します。DevTools(Networkタブ)で、各ホップのステータスコードとロケーションヘッダを見ることができる。シェル上で十分なことが多い:

curl -IL https://deinedomain.de
#または各リダイレクトの詳細表示
curl -IL --max-redirs 20 https://deinedomain.de

http→https→http(行ったり来たり)、www↔non-wwwのようなパターンに気をつける。最初のリクエストでも/wp-login.phpにリダイレクトされる場合は、プラグイン/テーマかクッキーに原因があることが多く、グローバルに起こる場合は、.htaccessかサーバーに原因があることが多い。

サーバーとWordPressのログをターゲットに使用

ログは時間を節約します。wp-config.phpのデバッグログを訪問者に表示せずに有効にしています:

define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
define('WP_DEBUG_DISPLAY', false); @ini_set('display_errors', 0);

それから、/wp-content/debug.logをチェックして、表示(例えば、リダイレクトの前に "Cannot modify header information")を確認する。同時に、ウェブサーバーのログもチェックする。Apacheの場合:access.logとerror.log、Nginxの場合:access.log with status 301/302。 ユーザーエージェントを見ることで、ボットだけが影響を受けているのか、すべてのユーザーが影響を受けているのかを判断することができます。

WP-CLI: コンソールからのクイックレスキュー

ダッシュボードにアクセスできない場合、私は以下の方法で多くのことを解決している。 WP-CLI:

# URLの確認と設定
wpオプションget home
wpオプション siteurlを取得する
wp option update home 'https://deinedomain.de'
wpオプション update siteurl 'https://deinedomain.de'

# パーマリンクを一度「保存スルー」する
wp rewrite flush --hard

# キャッシュを空にする
wpキャッシュフラッシュ
wp transient delete --all

# プラグインを一斉に停止/テストする
wp plugin deactivate --all
wp plugin activate classic-editor

こうすることで、リスクなくシステムに戻り、犯人を見つけ、本当に必要なものだけを作動させることができる。

www、スラッシュ、カノニゼーションはループなし

ループはしばしば 些細な矛盾www対非www、スラッシュの欠落/追加、プロトの混合。私は1つのバリアントを支持することにし、次のように設定するだけである。 a ルールチェーン。Apache における非 www→www の例(二重の https 施行なし):

RewriteEngine On
# ホストが www でない場合のみ転送する。
RewriteCond %{HTTP_HOST} !^www.[NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [L,R=301].

Nginxでは、サーバーのブロック転送を明確に設定し、PHP/プラグインのルールが混在しないようにしています。重要:まず、正規化(www/スラッシュ)を行い、次にhttpsを設定します。 a ポジション

プロキシ/CDNの背後にあるクリーン:HTTPSを正しく認識する

WordPressがロードバランサーやCDNの背後にある場合、クライアントはhttpsを使用しているにもかかわらず、バックエンドはhttpしか受信しないことがよくあります。WordPressはis_ssl()を間違って認識し、ループを生成します。私はwp-config.phpの早い段階でサーバー変数を修正します:

if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') { { $_SERVER['HTTPS'] = 'on; 'https'
    $_SERVER['HTTPS'] = 'on';
}

また、X-Forwarded-ProtoヘッダーとForwarded cleanヘッダーをプロキシに設定しました。HSTSは控えめに使っている:HSTSが有効な場合 なし そうしないとブラウザがハングアップします。私は、すべてのサブドメインがhttpsで安定して動作している場合にのみ、プリロードを使用しています。

ログインとクッキーのトラップを解除する

よくある原因は、クッキーの設定が正しくないことです。私は通常 なし COOKIE_DOMAIN。一度定義されている場合は、テストとして変更します:

define('COOKIE_DOMAIN', false);

また、管理者 Cookie のフラグ「Secure」が https で設定されているか、パスが「/」に設定されているかも確認します。問題が解決しない場合は、サーバー側のセッションを削除し(php-fpmを再起動するなど)、オブジェクトキャッシュ/redisを空にして、古いnonceが有効にならないようにします。

マルチサイトとドメインマッピングの特殊機能

時点では マルチサイト-設定、異なるマッピングはすぐにループにつながる:サブドメイン対ディレクトリモード、異なるプロトコル、独自のリダイレクトを持つ古いドメインマッピングプラグインなどだ。私はブログとサイトのテーブルをチェックし、プロトコルとホストを同期させ、言語切り替えのための自動リダイレクトを簡単に解除する。メインブログの "Super Admin "ログインは、ネットワークのリダイレクトを一元的に確認するのに役立ちます。重要:正規ドメインを決定するのは1つのインスタンスだけです。

WooCommerce、多言語対応と "ログインを隠す"

ショップや多言語サイトには、強制SSLページ(チェックアウト/アカウント)、Accept-Languageへの言語リダイレクト、セキュリティプラグインの「ログインを隠す」機能など、追加のリダイレクトロジックがあります。診断のために、私は自動言語リダイレクトを無効にし、一時的に/wp-login.phpを流用なしで許可します。WooCommerceでは、"Only these pages on SSL "をサーバー側できれいに設定するか、完全にシステム全体で設定し、混合状態が発生しないようにしています。

座標オブジェクトキャッシュ、オペコード、エッジキャッシュ

いくつかのキャッシング・レイヤーがある。 お互い amplify:PHPのオペコード(OPcache)、オブジェクトキャッシュ(Redis/Memcached)、プラグインのページキャッシュ、CDNエッジ。どのレイヤーも古いリダイレクトを返さないように、順番に空にしていく。ルール変更後は、エッジキャッシュを完全に無効にする。このとき初めてテストが意味を持つ。

典型的なNginxのトラップ

Nginxでは、ロケーションブロックが2回書き換えられたり、/index.phpが内部と外部で同居したりするとループが発生します。私は単一のクリーンなコンフィギュレーションを使用しています:最初にサーバーブロックの転送(www/https)、次に/index.phpの明確なtry_filesです。私は一貫して、add_header refreshと301/302の混合を避けています。

チェックリスト:10分で原因を見つける

  • ローカルでクッキー/キャッシュを削除し、シークレットモードでテストする。
  • curl -ILを実行し、チェーンを表示する。
  • .htaccess/Nginxをデフォルトパスに戻す
  • WP_HOME/WP_SITEURLを同期させる(必要であればWP-CLI経由で)。
  • 1つのインスタンスのみがhttpsを強制する(サーバー優先)
  • プラグイン/テーマを無効化し、段階的に有効化する
  • プロキシヘッダを正しく設定し、is_ssl() をチェックする。
  • 空のオブジェクト/ページ/エッジ・キャッシュ
  • ログのチェック:debug.log、access/error.log
  • 特別な機能マルチサイト、Woo、言語、Hide-Login

古典的なループを超えるエラーパターン

すべての301/302が本当のループであるとは限らない。 ミスルーティング コストもかかる。301から404は検索エンジンに「このリソースは永遠にここにある」というシグナルを送るが、空虚さをもたらす。あるいは、301の代わりに302を使うと、シグナルの永久的な統合を防ぐことができる。私は、チェーンを最大1~2レベルに保ち、恒久的なケースには301を、一時的なケースには302を設定し、QSAフラグや引数を正しく渡すことでクエリー文字列の損失を避ける。

安定したデプロイメントとドキュメント

ループの発生を未然に防ぐために、私は次のように文書化している。 すべてのルール誰が何をどこにルーティングするのか?私はステージング環境を使い、そこでルールの変更を試し、ヘッダーと時間を記録し、本番で同じサーバーとプラグインの設定を配布する。デプロイ後の短いチェック(スタートページ、ログイン、チェックアウト、言語)で失敗を防ぐことができる。

結論

をリリースする。 転送ループ 体系的:クッキーをチェックし、.htaccessをデフォルトにリセットし、WPのURLをカスタマイズし、SSLを正しく設定し、プラグイン/テーマを分離し、サーバーヘッダーを正しく配信する。これらのステップにより、通常は短時間でループを終わらせることができる。その後、インストールを保護し、リダイレクトを文書化し、アップデートを最新の状態に保つ。こうすることで、ログインしやすくなり、訪問者は正しいページにたどり着き、検索エンジンは時間を無駄にすることなくクロールしてくれる。構造化されたアプローチは繰り返しを避け、神経を使うこともありません。

現在の記事

サーバー環境におけるパケット損失を伴うネットワークデータパケットの視覚化
サーバーと仮想マシン

ネットワークパケット損失がウェブサイトの速度を測定可能に低下させる方法:包括的な分析

ネットワークパケット損失がウェブサイトの速度を低下させる理由:具体的な測定結果によると、1%のパケット損失で70%のスループット低下が確認されています。パフォーマンス向上のための解決策をご紹介します。.