存在しないURLからの自動リダイレクトを無効化する
WordPressには、存在しないページ(投稿や固定ページなど)にアクセスされた際に正しそうなURLを推測して自動でリダイレクトする機能があります。
例えば投稿やページで「http://example.com/sample-page/
」というURLのものがあった場合、存在しない「 http://example.com/sa
」というURLにアクセスされた際に自動で「http://example.com/sample-page/
」に補完してリダイレクトするような現象が起こります。
存在しないURLは存在しないものとして404ページを表示したい場合は、テーマのfunctions.phpに下記のように記載します。
1 2 3 4 5 6 7 8 9 |
/** * 存在しないURLからの自動リダイレクトを無効化します。 */ function remove_redirect_guess_404_permalink( $redirect_url ) { if ( is_404() ) return false; return $redirect_url; } add_filter( 'redirect_canonical', 'remove_redirect_guess_404_permalink' ); |
補足
この機能は WordPress 2.3 から追加された「カノニカルURL」(標準URL、正規化されたURL)の機能により行われています。「WordPress 2.3の新機能「カノニカルURL」 | ja.naoko.cc」さんで詳細が紹介されていますが、ページ名の補完(上記の例の「sa」→「sample-page」など)がなぜ行われるのかについてはメール内の途中で途切れたURLを、似たURLへリダイレクトしたりする
、というケースを想定したもののようです。