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