wordpressってページ表示に時間がかかる時ってありますよね。
仕組み上ページを表示するたびにデータベースにアクセスするから、サーバのスペックにより表示速度は変わります。
ある時、固定ページを表示しようとアドレスバーにURLを打ち込んだ際、タイポミスで間違ったURLを入力したことがありました。
すると、https://aonorihechima.com/category/javascript/を表示したのです。
これはwordpressが自動で似たパーマリンクを検索して表示する機能です。詳しくはソースファイルの/wp-includes/canonical.phpに書いてあります。
ちょっと見てますと、
redirect_guess_404_permalink()でデータベースにアクセスしてpost_nameをLIKE検索してるっぽいです。それって存在しないURLにアクセスがあったら無駄な負荷をかけることになってません?
存在しないURLに10回アクセスがあったら、10回以上データベースにLIKE検索するんでしょ?似たパーマリンク無いか〜〜って。
存在しないURLにアクセスがあったら、素直に404を返してnot foundページを表示すればいいのです。データベースへのアクセスも少なく済みますよね。
そんな訳で以下のコードをfunctions.phpに追記します。
function remove_redirect_404_permalink($redirect_url, $requested_url) {
if(is_404()) {
return false;
}
return $redirect_url;
}
add_filter('redirect_canonical', 'remove_redirect_404_permalink', 1, 2);
これで存在しないURLにアクセスしても似たパーマリンクを検索せずに404へリダイレクトします。
コメント