WordPress:URLの自動補完リダイレクトを無効にする方法

WordPress:URLの自動補完リダイレクトを無効にする方法

WordPressには本来存在しないURLを指定したとしても、WordPress側で推測してユーザーがアクセスしたかったであろうURLにリダイレクトする機能があります。
便利だと思う機能ではありますが、単純に存在しないURLはすべて404ページに飛ばす動きにする必要があったので、そのときの備忘録です。

具体的な例をあげると、例えばWordPressをインストール直後は固定ページが用意されており、それを閲覧するには通常http://example.com/sample-page/にアクセスすることで閲覧できますが、これをhttp://example.com/samとかhttp://example.com/sample-のような正確には間違っているURLを指定したとしても自動リダイレクトによってhttp://example.com/sample-page/にリダイレクトされるようになっています。

この機能自体は便利だと思いますし、個人的にもこれまでわざわざ無効化することもなかったのですが、先日存在しないのであればすべて404ページに推移させたいという要望をもらい、その際はfunctions.phpへ下記のように記述することで対応できました。

functions.php

function disable_redirect_canonical( $redirect_url ) {
  if( is_404() ) {
    return false;
  }
  return $redirect_url;
}
add_filter( 'redirect_canonical', 'disable_redirect_canonical' );

上記を記述後、先ほど例にあげたようにhttp://example.com/samとかhttp://example.com/sample-のような間違ったURLでアクセスしたとしてもhttp://example.com/sample-page/へはリダイレクトされずに、404ページにリダイレクトされる動きを確認できます。

Close the search window,
please press close button or esc key.