意図しないリダイレクトが発生する主な原因は
- redirectionなどのプラグインが原因
- .htaccessにリダイレクトが記載されたまま
- 上記を対応したが、ブラウザキャッシュが効いている
等が想定されます。
それとは別にWordPressの標準機能には存在しないURLにアクセスした場合に似たようなURLにリダイレクトする機能が備わっています。
自動補完(正規化・カノニカル)によるリダイレクト機能の影響で、無限リダイレクトが発生する現象を確認しましたので、この解決方法を記載しておきます。
目次
URLの自動補完(正規化・カノニカル)リダイレクトを無効にする方法
単純にfunctions.phpに以下のコードを入力すれば、すべての自動補完によるリダイレクトは停止します。
WordPressの管理画面 > 外観 > テーマファイルエディター > functions.php
remove_action('template_redirect', 'redirect_canonical');
ただし便利な機能ではあるので、該当する記事だけ停止したい場合は以下のコードでも対応可能です。
特定の文字列(例:top)を含むURLだけ、停止したい場合はこちら。
function motoki_disable_redirect_canonical( $redirect_url, $requested_url ) {
if ( strpos( $requested_url, 'top' ) !== false ) {
return false;
}
return $redirect_url;
}
add_filter( 'redirect_canonical', 'motoki_disable_redirect_canonical' );
まとめ
自動補完によるリダイレクトは、間違ったURLを入力しても似たようなURLを推測、表示してくれる便利なWordPressの機能ですが、特定の条件が一致してしまうと無限リダイレクトが起きるようです。
その場合はこの記事のコードを参考にして停止してみてください。