Ошибка Wordpress 404 при переходе с Apache на Nginx

У меня есть рабочая установка WordPress на сервере Apache, и я хотел перейти на сервер NGINX на VPS. Я скопировал все файлы, настроил соединение 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;

 }

Я пробовал решения других вопросов без успеха. Спасибо за помощь

Как убрать количество товаров в категории WooCommerce
Как убрать количество товаров в категории WooCommerce
По умолчанию WooCommerce показывает количество товаров рядом с категорией, как показано ниже.
1
0
32
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Попробуйте изменить свою часть:

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;
}

Расположение регулярных выражений проверяется в порядке появления, и для обработки запроса используется самое первое совпадение. Это делает ваше последнее местоположение регулярного выражения бесполезным, а второе не предотвратит доступ к любому скрытому файлу PHP или файлу PHP внутри скрытого каталога. Ваш порядок расположения регулярных выражений должен быть обратным.

Ivan Shatsky 11.05.2022 14:49

Другие вопросы по теме