WordPressの検索結果のページネーション2ページ目以降にトップページが表示される

f:id:ryskit:20160920010633j:plain

WordPressの検索結果ページで2ページ目以降がトップページが表示されて悩みまくっていたので、情報共有します。

状況

  • パーマリンクの設定は、数字ベースを設定
  • 検索結果1ページ(http://example.com/?s=)は正しく絞り込んだ数の記事数とページネーションが表示される
  • 検索結果2ページ目以降(http://example.com/page/2/?s=)は、なぜかトップページの2ページ目以降が表示される
  • カテゴリやカスタムタクソノミの一覧ページは、正しくページネーションされる
  • WebサーバはNginxを利用

原因

  • Nginxのlocation / の設定が上手くいっていなかった
location / {
    if (!-e $request_filename) {
        rewrite ^.+?(/wp-.*) $1 last;
        rewrite ^.+?(/.*\.php)$ $1 last;
        rewrite ^ /index.php last;
    }
}

この記事を参考にしました。

最後に

パーマリンクをデフォルト設定にすると検索結果のページネーションも正常に動いていて、ずっとページネーションか設定、search.phpなどコードの記述方法が間違っていると思い、そのようなキーワード関連で調べていたため、一向に解決できない問題でした。

ふと、Webサーバの設定が間違ってるんじゃないかと思って修正すると、パーマリンクが数字ベースでも正常に動作するようになったので、同じような問題で詰まっている人は参考にしてみてください。