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を再起動すれば、パーマリンクが正常に設定されるようになります!