WordPressで作成しているサイト(ブログ)で、非公開にしているページの中で、同じ投稿タイプにもかかわらずページによってリダイレクトループが発生したりしなかったりすることがあります。
WordPressにログインしていない状態でリダイレクトループが発生しているページにアクセスすると、このようなエラー画面が表示されます。
通常であれば、非ログイン状態で非公開のページを開くと404(NotFound)となり404専用ページやトップページが開くはずですが、この場合、この画面でストップします。
結論(対処法)を先にいうと、データベース内にある「_wp_old_slug」を削除するとリダイレクトループが解消されます。
「_wp_old_slug」はどうやって削除するんですか?
phpMyAdminが使える場合はそこで検索して手作業で削除することもできますが、「Slugs Manager」という「_wp_old_slug」を一括で消せるプラグインもありますよ。
「_wp_old_slug」を一括で削除するプラグイン「Slugs Manager」
WordPress管理画面のプラグインの新規追加画面で「Slugs Manager」と検索します。
インストールしたら有効化し、設定画面を開いてみましょう。
管理画面サイドバーの[ツール]の中にあります。
「_wp_old_slug」の一覧が表示されます。基本的には全部削除していいかと思います。
削除が完了すると上図のような通知が出ます。
また、Pro版にすると自動で「_wp_old_slug」を削除してくれる機能があるようですが、「_wp_old_slug」自体が頻繁に発生するようなものではないので、気づいたときに手動で一括削除するぐらいでいいでしょう。
これで、リダイレクトループが解消されていると思います。
ログインしていない状態で、リダイレクトループが発生していたページにアクセスすると、リダイレクトループが解消され、404ページやトップページ(404用の表示を用意していない場合)が表示されると思います。
Search Consoleを入れている場合はエラーを確認して、「修正を検証」する
また、Search Consoleを入れている場合は[カバレッジ]で[リダイレクトエラー]が出ていると思いますので、どのページでリダイレクトループが発生しているか確認してみましょう。
リダイレクトループが発生しているページが[リダイレクトエラー]として表示されています。
クリックすると、下図のような表示がされていると思います。
「_wp_old_slug」の削除が完了したなら、[修正を検証]をクリックし、Googleによる検証を待ちましょう。