HOMEPAGE TIPS BLOG

ホームページ制作TOP > Web技術Tips > 特定のページだけWordPressの自動リダイレクト機能を無効にする
[期間限定] 標準クオリティープラン  WEBサイト制作20%OFF
失敗しないWeb制作会社の選び方
WordPress

特定のページだけWordPressの自動リダイレクト機能を無効にする

WordPress2017.06.15

WordPress の標準URL(カノニカルURL)機能

WordPressには自動でURLを補完してくれる『標準URL(カノニカルURL)』という機能があります。

これがなかなか便利な機能で、例えばプラグインを使って固定ページをそっくり投稿ページに変換するとします。

普通は固定ページを投稿ページに変換するとページのURLが変わってしまうものですが、この『標準URL』機能によって、古いURLにアクセスすると新しいURLに自動でリダイレクトしてくれます。

例)

http://example.com/test/

http://example.com/2017/03/31/test/

うまくいかない場合

ただ、この補完機能はたまに間違えていたり、余計なことをします。

例えば、

  • http://example.com/aaa
  • http://example.com/bbb/aaa

という2つのURLは、ディレクトリ名は同じだけど階層が違うのですが、両方共

http://example.com/ccc

にリダイレクトしてしまうことがあります。

もちろんディレクトリ名が異なればこのバグは起きないですが、

functions.php にフィルターフックを記述することでも防げます。

コード

function redirect_special_permalink( $redirect_url, $requested_url ) {
	$match_url = array(
		'aaa'
	);
	foreach( $match_url as $url ) {
		if ( strpos($requested_url, $url) ) return false;
	}
	return $redirect_url;
}
add_filter( 'redirect_canonical', 'redirect_special_permalink', 10, 2 );

2番目の引数である $requested_url に、$match_url の内容が含まれていれば return false でリダイレクトをやめさせます。

 参考サイト

WordPressのおせっかいな404自動リダイレクトを止める – Qiita

PAGE TOP