【Nginx】WordPressのパーマリンクの設定で気をつけること

Amazon linux2のNginxにWordPressサーバーを建てると、デフォルトではパーマリンクの設定が基本以外にすると、404エラーやそもそも投稿できなくなってしまいます。

これを直していきます。

今回のこの検証用環境はLet’sEncryptでSSLをしていたので、/etc/nginx/nginx.confには以下のように記述されています

server {
    server_name wordpress-replace.testtotest.com; # managed by Certbot
        root         /usr/share/nginx/html/wordpress; #変更

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }


    listen [::]:443 ssl ipv6only=on; # managed by Certbot
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/wordpress-replace.testtotest.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/wordpress-replace.testtotest.com/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}

パーマリンクを基本以外にするとエラーになってしまうので、ひたすらググっていたらほとんどのサイトに「.htaccessを直せ!」って書いてあったのですが、いやNginxだしなぁとなっていたのですが、解決方法を発見

location/{}の部分に以下を挿入します。

try_files $uri $uri/ /index.php?$args;

実際に書くとこうなります

 server {
    server_name wordpress-replace.testtotest.com; # managed by Certbot
        root         /usr/share/nginx/html/wordpress; #変更

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
    try_files $uri $uri/ /index.php?$args; //ここを追記
        }

これでNginxを再起動すれば、パーマリンクが正常に設定されるようになります!