Search Consoleを見ると謎のエラー「ページにリダイレクトがあります」。
リダイレクトを設定した記憶もなく、詳細を見るとWebサイト(WordPress)に存在しないページがずらり…。一体どうゆう事?どう直す?という方向けの記事です。
原因はWordPressの自動補完リダイレクト機能
WordPress(ワードプレス)には、存在しないURLや入力ミスによる曖昧なURL・惜しいURLを入力した場合、「これではないですか?」のように自動でURLを補完してくれる機能があります。
これを自動補完リダイレクトと言います。
ユーザーが曖昧なURLを入力しても404エラーではなく、代わりの似たページを表示させることで、ユーザーをがっかりさせない工夫なのだと思います。
ただ、自動的に憶測のページにリダイレクトされるというのも、ありがた迷惑な時もあります。
今回の様に、身に覚えのないURLが大量にSearch Console上にエラー表示されてしまったりもしますので…。
ここで紹介するのは、function.php内へWordPressの自動補完リダイレクトを停止させるコードを記述するというものです
自動補完リダイレクトには、実は2種類のリダイレクトがあるようです。
- ひとつは曖昧なURLを推測して自動補完してくれるもの。
- もうひとつは過去のURLを元にリダイレクトしてくれるものです。
WordPressの自動補完リダイレクトを停止する方法
ここでは実際にWordPressの自動補完リダイレクトを停止する方法を
- 曖昧なURLを推測して自動補完してくれる機能を停止
- 過去のURLを元にリダイレクトしてくれる機能を停止
- どちらも完全停止
この3つに分けて書いておきます。必要に応じて使い分けてください。
曖昧なURLを推測して自動補完してくれる機能を停止
先程書いた「曖昧なURLを推測して自動補完してくれる機能」を停止するコードがこちらです。
//曖昧なURLを推測して自動補完してくれる機能を停止
add_filter( 'do_redirect_guess_404_permalink', '__return_false' );
上記を該当のWordPress内の「function.php」に追加してください。
過去のURLを元にリダイレクトしてくれる機能を停止
先程書いた「過去のURLを元にリダイレクトしてくれる機能」を停止するコードがこちらです。
//過去のURLを元にリダイレクトしてくれる機能を停止
remove_action( 'template_redirect', 'wp_old_slug_redirect' );
上記を該当のWordPress内の「function.php」に追加してください。
WordPressの自動補完リダイレクトを両方停止
「曖昧なURLを推測して自動補完してくれる機能」も「過去のURLを元にリダイレクトしてくれる機能」もどちらも完全に停止したい方は、以下の様にまとめて書いてください。
WordPressの自動補完リダイレクトを完全に停止する事ができます。
//曖昧なURLを推測して自動補完してくれる機能を停止
add_filter( 'do_redirect_guess_404_permalink', '__return_false' );
//過去のURLを元にリダイレクトしてくれる機能を停止
remove_action( 'template_redirect', 'wp_old_slug_redirect' );
確認方法
実際に、ちゃんとWordPressの自動補完リダイレクトが停止されているかの確認方法がこちらです。
WordPressの自動補完リダイレクト停止前
Search Consoleのエラー「ページにリダイレクトがあります」をクリックし、表示された身に覚えのないURLを表示してください。
すると、WordPressの自動補完リダイレクト停止前の場合は自動補完機能が働いて、予測した存在するURLへ自動で飛ばされます。(404エラーページは表示されません)
WordPressの自動補完リダイレクト停止後
同じく、先程のURLを表示してみてください。
ここで自動補完されたURLへ飛ばず、純粋に「そんなURLはないよ」と404ページが表示されていれば成功です。
うまくいかない場合は、ページのキャッシュを削除した状態でお試しください。
これでSearch Consoleに吐き出された「ページにリダイレクトがあります」が徐々に減っていくと思います。