
WordPressで記事を削除したのに404ページが表示されない。リダイレクトされる。
これはWordPressのURL自動補完機能が原因です。
URL自動補完とは、指定したURLが404(見つからない)の場合、スラッグの似ているURLに自動的にリダイレクトする機能です。
この問題は、WordPressの自動補完を停止することで解決します。
この記事では、WordPressのURL自動補完を停止して無効化する方法を解説します。削除した記事のURLスラッグでリダイレクトが発生する場合の解決策です。
WordPressのURL自動補完を停止する
WordPressで記事の削除したのに404が表示されずに別記事に飛ばされる。
これはWordPressのURL自動補完機能が原因です。
WordPressのURL自動補完を停止するには、次のコードをfunctions.phpに追加してください。
//WordPressの自動補完リダイレクトを停止する
add_filter('redirect_canonical', function ($redirect_url) {
if (is_404() === true) return false;
return $redirect_url;
});
このコードは表示されたページが404の場合、自動補完リダイレクトを無効にします。
別記事にリダイレクトされて404ページが表示されない
記事を削除した場合、検索エンジンに削除したことを伝える必要があります。
削除記事のURLにクロールが来たとき、404ページが表示されれば問題はありません。
しかし、
WordPressのURL自動補完機能が働いていると「削除記事のURLと似たURL構造の別記事」に勝手にリダイレクトされる可能性があります。
これは非常に困ります。
記事内容の異なるページにリダイレクトしてしまうと、検索エンジンからペナルティを受ける危険もあります。
問題が起こるのは次のような状況です。
- 必要なくなった記事を削除した。
- 削除した記事と「似たURLスラッグ」の別記事が存在する
上記1と2が重なっている場合は不本意なリダイレクトに注意してください。
WordPressでは、記事のURLスラッグを変更したときにもリダイレクトが自動で設定されます。次の項目を参照してください。
古いURLスラッグからのリダイレクトを停止する
WordPressで記事のURLスラッグを編集すると、古いスラッグから新しいスラッグへのリダイレクトが設定されます。

- 公開している記事のURLスラッグを変更するとリダイレクトが設定される
- 下書きに戻してURLスラッグを変更するとリダイレクトは設定されない
この機能は便利ですが、人によっては必要ない場合もあると思います。
古いスラッグから新しいスラッグへのリダイレクトを停止するには、次のコードをfunctions.phpに追加してください。WordPressでPHPファイルを編集するときの注意点
//古いスラッグからのリダイレクトを禁止
remove_action('template_redirect', 'wp_old_slug_redirect');
これで記事URLを変更しても古いURLスラッグからのリダイレクトは発生しなくなります。
なぜWordPressは勝手にURLを自動補完をするのか?
WordPressが勝手にURLを自動補完するのは、検索エンジンによる重複ペナルティを避けるためです。
検索エンジンは、www.somedomain.comとsomedomain.comが同じページに向かう場合、2つの異なるURLと見なします。このSEOの機能強化(自動補完)はすべての着信リンクをいずれかにリダイレクトすることにより、重複コンテンツによるペナルティを防ぎます。
redirect_canonical – developer.wordpress.org
ここまではcanonicalの機能のなのですが、
WordPressではさらに、指定されたURLが見つからなかったときに正しいページを見つけようとします。
また、ユーザーが厳密なWordPressクエリに基づいて存在しないURLを入力したとき、正しいリンクを見つけようとします。
redirect_canonical – developer.wordpress.org
上でも述べたように、これは意図しないリダイレクトを発生させる可能性があります。
URL自動補完に関しては、一見便利で特定の状況では役に立ちますが、害になる部分(勝手に別記事にリダイレクトされる)も目立ちます。
自動化というものは便利ですが、裏を返せば融通が利かないということでもあるのです。
WordPressは基本的にお節介機能満載です。
この辺りは独自に変更するしかありません。
削除記事の404ページが表示されないときの対処法まとめ
WordPressのURL自動補完を停止して無効化する方法を紹介しました。削除した記事のURLスラッグでリダイレクトが発生する場合に試してください。
- WordPressのURL自動補完を停止する
- 別記事にリダイレクトされて404ページが表示されない
- 古いURLスラッグからのリダイレクトを停止する
- なぜWordPressは勝手にURLを自動補完をするのか?
WordPressの機能は余計な部分がありますが、この辺は独自に調整してください。