ワードプレスのサイトが、「このウェブページにはリダイレクトループが含まれています」や「ページの自動転送設定が正しくありません」、「このページは表示できません」等とブラウザで表示されリダイレクトループの状態になってしまったときの対処方法をいくつかご紹介します
この記事の目次
リダイレクトループとは?
リダイレクトループとは、サイトの特定のURLをブラウザが表示したときに別のURLに転送する設定が、循環してしまいいつまでたっても特定のページが表示できなくなる現象を指します。
ワードプレスでリダイレクトループが起こる原因は様々ですが、大きく分けて、パーマリンクの設定不全、テーマの関数のリダイレクト設定の不全、何らかのプラグインのリダイレクトの設定不全、httpsの設定不全等が考えられます。
サイトURLやパーマリンクの設定不全によるリダイレクトループを解消する
サイトのURLの変更や、ディレクトリ変えによってリダイレクトループが発生した場合は、サイトURLの設定やパーマリンクの設定が正しく記載されていない可能性があります。管理画面にもログインできなくなっている場合は、wp-config.phpに下記のようにまず記載してみます
define('WP_HOME','http://ワードプレスのサイトトップページURL'); define('WP_SITEURL','http://ワードプレスのインストールディレクトリURL');
次に、http://ワードプレスのインストールディレクトリURL/wp-admin/ にアクセスし、ログイン後、管理画面の「設定」→「一般」に行き
WordPress アドレス (URL) → http://ワードプレスのサイトトップページURL
サイトアドレス (URL) → http://ワードプレスのインストールディレクトリURL
を正しく記載して更新します
パーマリンクを再設定する
次に管理画面の「設定」→「パーマリンクの設定」に行き、そのままページ下の「変更の更新」ボタンを押します。
(htaccessが書き込みできなかった旨のエラーが表示されたらFTPソフト等で直接htaccessファイルにエラー画面に表示されている内容を書き込みましょう)
この事によりパーマリンク設定が自動的に正しい値で書き出される為、設定不全が解消される事があります。
プラグインによるリダイレクトループを解消する
プラグインがリダイレクトループを引き起こしている場合があります。この場合、該当のプラグインを発見しプラグインの停止を行います。その結果サイトのリダイレクトループが解消されたら、今一度そのプラグインの設定を見直す必要がございます。
特に良くリダイレクト関連でエラーを出す可能性のあるプラグインは下記のプラグインです
W3 Total Cache
このプラグインでよくあるリダイレクトループの現象は、サイトの上記URL設定にwww.を加えると直る事があります
WPtouch
WPtouchはユーザーがモバイルでサイトにアクセスしたときに、URLをモバイルサイトにリダイレクトします。この機能が他のプラグインと相性が悪い場合にリダイレクトループを引き起こすことがあります。
対処方法は、他のプラグインで、モバイルアクセス時にリダイレクト機能を仕様しない設定を書き加えたりする事となります。
Redirection
Redirectionプラグインは、その名の通りワードプレスに様々なリダイレクト設定を追加できるプラグインです。誤った設定を一旦書き込んでしまうとリダイレクトループが発生する事があります。設定を一つ一つ検証して不正な物が含まれていないか検査します
ワードプレス本体やテーマの関数によるリダイレクトループを解消する
ワードプレスの本体には、様々なURLを自由にリダイレクトする機能が含まれています。この機能をテーマが使用していてリダイレクトループが発生している事があります。
強制的にワードプレスのリダイレクト関数の一部を停止すると、リダイレクトループが解消される事があります
*注意:この方法はかなり強引な方法です。本来ならばテーマのリダイレクト関連の関数を一つ一つ検証する方が正しい修正を行えるかと思います
↓テーマのfunctions.phpに下記の記載を一番上に追加します
remove_action('template_redirect', 'redirect_canonical');
https化によるリダイレクトループを解消する
ワードプレスをhttps化してhttpのURLからhttpsへのリダイレクトの設定を行った後に、リダイレクトループが発生する事があります。この場合の代表的な対処方法をいくつか記載します
サイトのURLが正しく設定されているか確認する
管理画面の「設定」→「一般」より、サイトのURL設定にhttpsが含まれているか確認しましょう。
また、www.をドメイン名の前に加えてリダイレクトループが解消しないかも確認されてください
wp-config.phpを修正する
wp-config.phpの末尾に下記の記載を追加します
$_SERVER['HTTPS'] = 'on';
管理画面ログイン時に「このページにアクセスするための十分なアクセス権がありません。」と表示されたら?
稀に上記の追記をすると、サイトの表示は復旧したが、CloudFlare等のCDNと併用すると管理画面へログインできなくなる場合がございます。
この場合、上記の編集は消去してwp-config.phpの
define(‘ABSPATH’, dirname(__FILE__) . ‘/’);
という行の下に下記のように追記されてみて下さい
$_SERVER['HTTPS'] = 'on'; $web_site = 'wp-doctor.jp'; $web_site_url = 'https://' . $web_site; define('WP_HOME', $web_site_url); define('WP_SITEURL', $web_site_url); define('FORCE_SSL_LOGIN', true); define('FORCE_SSL_ADMIN', true);
※wp-doctor.jpの部分は御社のワードプレスのドメインURLを記載されてください。
httpsへリダイレクトするプラグインを使用する
プラグインのみでhttpsにリダイレクトするように設定するとリダイレクトループが解消される事があります。詳しくは下記の記事を参照されてください