最近、nginxでWordPressをさわっています。
サイトのユーザビリティ的にも、SEO的にも、パーマリンクの設定をカスタマイズした方がいいそうです。
「設定 → パーマリンク」から設定できます。
今回、とあるWordPressのサイト構築で、カスタム構造を選択して下のような設定をしました。
「http://………………/%category%/%postname%/」
すると、404エラーが大量発生。。。
アクセスログを確認すると、「http://………………/xxxxx/」というURLにアクセスした時、nginxが「ドキュメントルート/xxxxx/index.php」を探しにいってしまうのが原因だとわかりました。
nginxでWordPressを使う際、「ドキュメントルート/xxxxx/index.php」がない場合は、WordPressのindex.phpへ投げる、という設定が必要になります。
location / {
try_files $uri $uri/ @wordpress;
}
これで、URLに一致したファイルがあるか? → なかったらディレクトリがあるか? → それもなかったら@wordpressロケーション(名前付きロケーション)に投げる、となります。
そして、@wordpressロケーションを定義しておきます。
location @wordpress {
fastcgi_param SCRIPT_FILENAME WordPressのindex.phpのパス;
- その他、fastcgiの設定 -
}
これで、404エラーが発生しなくなりました!