nginxでのワードプレスのパーマリンク設定
すこしはまったのでnginxでのwordpressのパーマリンク設定のメモ
ポイントとしては、“try_files $uri @wordpress;”と try_filesディクレティブでURLが見つからないファイルはすべて location @wordpress { ~ } ブロックに回す。
@wordpress { ~ } ブロックでは、リクエストのURIにかかわらずすべて index.phpを実行する設定とする。
以下設定全部。
server {
#ポート80番をlisten
listen 80;
#マルチドメインのサーバー名
server_name cycling-course.okinawa;
#ドキュメントルート
root /usr/share/nginx/html/cycling-course.okinawa;
# ApacheでいうDirectoryIndex
index index.php index.html;
# ロケーションドメイン/に適用ブロック
location / {
# 左側からマッチするかチェックしていく
# http://cycling-course.okinawa/2017/10/ だったら、$urlは、2017/10/
# チェック1 '2017/10/' があるか
# チェック2 '2017/10//' があるか
# 適合がないので、@wordpressブロックを適用する
try_files $uri $uri/ @wordpress;
}
# 拡張子が .phpにマッチした場合に適用されるブロック
location ~ .php$ {
# 前のブロック同様にマッチしなければ @wordpressブロックを適用する指定
try_files $uri @wordpress;
fastcgi_index index.php;
fastcgi_split_path_info ^(.+.php)(.*)$;
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
# 先に include しておかないと次の$fastcgi_script_nameが無効になって
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
# ファイルがマッチしない場合に適用する@wordpressブロック
location @wordpress {
fastcgi_index index.php;
fastcgi_split_path_info ^(.+.php)(.*)$;
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
include fastcgi_params;
# ※ここがミソ。リクエストに関係なくすべて、index.phpを実行する
fastcgi_param SCRIPT_FILENAME $document_root/index.php;
}
}
参考サイト
http://qiita.com/egnr-in–6matroom/items/a08f4851bf16d0131e60
http://qiita.com/kotarella1110/items/f1ad0bb40b84567cea66