Wordpress 从 Apache 迁移到 Nginx 时出现 404 错误

Wordpress error 404 in migration from Apache to Nginx

我在 Apache 服务器上安装了 WordPress,想迁移到 VPS 上的 NGINX 服务器。我复制了所有文件,设置了 MSQL 连接等,一切似乎都正常,除了已发布的文章,它们都出现 404 错误。管理区工作正常,没有明显问题。

虚拟服务器配置为:

server {
if ($host = www.xxx.es) {
return 301 https://$host$request_uri;
} # managed by Certbot


listen 80;
server_name xxx.es www.xxx.es;
return 301 https://www.xxx.es$request_uri;}

server {
server_name  xxx.es www.xxx.es;
root /home/www/xxx.es/html/;
index index.php;

#listen [::]:443 ssl ipv6only=on; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/www.xxx.es/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/www.xxx.es/privkey.pem; # managed byCertbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

 location ~ [^/]\.php(/|$) {
 fastcgi_split_path_info ^(.+?\.php)(/.*)$;
 if (!-f $document_root$fastcgi_script_name) {return 404;}


 fastcgi_param HTTP_PROXY "";
 fastcgi_pass unix:/run/php/php7.2-fpm.sock;
 fastcgi_index index.php;
 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 include fastcgi_params;

 }

其他问题的解答我都试过了,没有成功。感谢帮助

试着改变你的部分:

location ~ [^/]\.php(/|$) {
    fastcgi_split_path_info ^(.+?\.php)(/.*)$;
    if (!-f $document_root$fastcgi_script_name) {return 404;}

    fastcgi_param HTTP_PROXY "";
    fastcgi_pass unix:/run/php/php7.2-fpm.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

}

给这个:

location / {
    try_files $uri $uri/ /index.php?q=$uri&$args;
}

location ~ \.php$ {
    try_files $uri =404;
    fastcgi_pass unix:/run/php/php7.2-fpm.sock;
    fastcgi_index index.php;

    include fastcgi_params;
}

location ~ /\. {
    deny all;
}

location ~* /(?:uploads|files)/.*\.php$ {
    deny all;
}