[WordPress]マルチサイトでのNginx設定(サブディレクトリ型)

2019年10月27日

サイトのURLにwpをつける必要があったので、ルーティング先が「/wp/」がついたものになってます。

location / {
        try_files $uri $uri/ /wp/index.php?$args;
}

rewrite /wp/wp-admin$ $scheme://$host$uri/ permanent;
rewrite /wp/files/$ /wp/index.php last;

if (!-e $request_filename) {
        rewrite ^/wp/[_0-9a-zA-Z-]+(/wp-.*) /wp/$1 last;
        rewrite ^/wp/[_0-9a-zA-Z-]+.*(/wp-admin/.*\.php)$ /wp/$1 last;
        rewrite ^/wp/[_0-9a-zA-Z-]+(/.*\.php)$ /wp/$1 last;
}

 

2行目のtry_filesは指定した順番でURLを見ていくもので、どのファイルにも一致しなければ最終的には/wp/index.phpへアクセスします。(通常のWordPressと同じ設定)

9〜11行目では、/wp/sitename/wp-admin(wp-includes, wp-content)にアクセスがきたら/wp/wp-admin/(wp-includes, wp-content)にアクセスというもの。(マルチサイト用設定)

ちなみにこれはマルチサイトで動くために最低限必要なものだけなので、WordPressを動かすにはPHP-FPMの設定も必要です。
きちんと設定したい人はWordPress.orgのNginxページを参考に