WordPressを利用していると、存在しないURLにアクセスした際に、類似したURLを自動的に補完してリダイレクトしてくれる便利な機能があります。

この機能は一見有用に思えますが、場合によっては不要な動作であり、意図しないページにアクセスされる原因となります。
この記事では、この「類似URL自動補完リダイレクト」を無効化する方法を解説します。

類似URL自動補完リダイレクトとは?

そもそも「類似URL自動補完リダイレクトとは」とは?
たとえば以下のようなページが存在するとします。

存在するURL:

https://example.com/news/

このとき、入力をミスって次のようなURLをリクエストしたとします。

https://example.com/new/

URLの最後の「s」を入力し忘れているので、本来ならば存在しないページなので404エラーとなるはずですが、自動で類似しているURLへリダイレクトしてくれます。

この動作は、サイト内リンクの整合性を保つための仕組みですが、以下のような問題が発生する可能性があります。

  1. UXの低下:意図しないページに遷移することで混乱を招く。
  2. SEOへの影響:重複コンテンツや不要なリダイレクトがSEOに悪影響を与える可能性がある。
  3. セキュリティのリスク:リダイレクト先が攻撃者によって悪用される可能性。

類似URL自動補完リダイレクトを無効化する方法

以下のコードをWordPressテーマのfunctions.phpに追加することで、この動作を無効化できます。

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

説明:

  • 「redirect_canonical」フックを使用して、WordPressが類似URLを探してリダイレクトする処理を無効化。
  • 「is_404()」を条件に設定しているため、404エラーが発生した場合にリダイレクト処理をスキップ。

注意点

類似URL自動補完リダイレクトを停止した場合、ユーザーが存在しないページにアクセスした際、404ページが表示されます。
404ページにはユーザーが迷わないよう適切なナビゲーションやサイト内検索を配置しておくことをオススメします。