WordPressで勝手にリダイレクトされる
WordPressでは存在しているページに近いURLでアクセスした際、存在しているページへ勝手にURLが変更されて表示されます。
本記事ではどのようにリダイレクトされるのか、リダイレクトさせず404として扱いたい場合にはどうするか紹介します。
リダイレクトされる現象
WordPressでデフォルトで公開されているタイトル「Hello world!」という投稿があります。パーマリンク設定が「投稿名」の際、このページにアクセスするには「https://ドメイン名/hello-world/」というURLにアクセスします。
今回扱うのは「https://ドメイン名/hello-worl/」のように惜しいけど違うURLでアクセスした際、勝手に「https://ドメイン名/hello-world/」というURLにリダイレクトされてしまう現象です。
なぜリダイレクトされる?
404が期待されるページにアクセスしているのに存在しているページへリダイレクトされるのか。
それはWordPressが存在するURLを探してリダイレクトするからです。
どのようなURLがリダイレクトされるのか
パーマリンク設定が「投稿名」の場合「https://ドメイン名/hello-world/」は「https://ドメイン名/index.php?page=&name=hello-world」とリライトされます。このnameの値でライク検索されています。
ヒットした場合そのURLへとリダイレクトされます。
WordPressインストール直後であれば、「https://ドメイン名/h/」とアクセスしても「https://ドメイン名/hello-world/」へとリダイレクトされるということです。存在するURLに近くても「https://ドメイン名/ello-world/」の場合検索でヒットしないのでリダイレクトされません。
リダイレクトしないようにしたい
勝手にリダイレクトして欲しくない場合もあると思います。その場合下記コードを利用して制御できます。
add_filter( 'do_redirect_guess_404_permalink', '__return_false' );
functions.phpやWP Codeに張り付ければOKです。