Почему не работает WordPress + Nginx?

Ссылка скопирована
1 ответ

Имею такой конфиг nginx

server {     listen 80;     listen [::]:80;      root /var/www/wp-api;     set $php_sock unix:/var/run/php/php8.1-fpm.sock;     index index.php;      server_name wp.domain.ru www.wp.domain.ru;      access_log /var/www/site.ru/logs/wp1.access.log;     error_log /var/www/site.ru/logs/wp1.error.log;      location / {         try_files $uri $uri/ =404 /index.php?$args;     }      location ~ .php$ {         include snippets/fastcgi-php.conf;         fastcgi_pass $php_sock;         fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;         fastcgi_read_timeout 300;         fastcgi_send_timeout 300;         fastcgi_buffers  16 32k;         fastcgi_buffer_size  64k;         fastcgi_busy_buffers_size 64k;     } }

server { listen 80; listen [::]:80; root /var/www/wp-api; set $php_sock unix:/var/run/php/php8.1-fpm.sock; index index.php; server_name wp.domain.ru www.wp.domain.ru; access_log /var/www/site.ru/logs/wp1.access.log; error_log /var/www/site.ru/logs/wp1.error.log; location / { try_files $uri $uri/ =404 /index.php?$args; } location ~ .php$ { include snippets/fastcgi-php.conf; fastcgi_pass $php_sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_read_timeout 300; fastcgi_send_timeout 300; fastcgi_buffers 16 32k; fastcgi_buffer_size 64k; fastcgi_busy_buffers_size 64k; } }

При этом не работают ссылки, по любому адресу открывается главная страница.
Так же не работает 404, пробовал разные конфиги, результат один.

Дополнительные вопросы

Почему не работает Wordpress + Nginx?

потому что не искали и не читали,(пример)

  • Владимир Брумер, пример с вики nginx был первым, что я пробовал. Проблема оказалась в пермалинках, а не конфиге
  • Refguser @Refguser Делаю ИМ и другие решения

    При этом не работают ссылки, по любому адресу открывается главная страница.

    Потому что не прописаны правила для ЧПУ

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

    После изменений перезапустить сервис и обновить пермалинки в ВП.

    • Действительно, вся проблема была в пермалинках. Большое спасибо!

    Ответы на вопрос 0

    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Никита Орлов Ответ

    Для WordPress на nginx все красивые URL должны попадать в index.php, если физического файла или папки по такому пути нет. В вашем варианте проблема в логике try_files: вставка =404 перед /index.php?$args завершает обработку раньше, чем запрос дойдёт до WordPress. Поэтому ЧПУ, REST API и 404 могут вести себя неправильно.

    Минимальный рабочий блок для WordPress:

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

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

    Блок PHP можно оставить стандартным, главное чтобы SCRIPT_FILENAME указывал на реальный файл и сокет php-fpm совпадал с установленной версией PHP:

    location ~ .php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

    location ~ .php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; }

    После изменения конфигурации проверьте синтаксис и перезагрузите nginx:

    nginx -t
    systemctl reload nginx

    nginx -t systemctl reload nginx

    Затем в админке WordPress откройте Настройки → Постоянные ссылки и просто сохраните текущую структуру. Это обновит rewrite-правила WordPress. Если после этого любой несуществующий URL всё равно показывает главную, проверьте уже не nginx, а тему/плагины: иногда шаблон или SEO-плагин перехватывает 404 и делает редирект на главную.

    • /wp-admin/ должен открываться напрямую.
    • /wp-json/ должен отдавать REST API, а не главную страницу.
    • Несуществующий адрес должен вернуть 404-шаблон WordPress.
    • Существующая запись должна открываться по своей постоянной ссылке.

    Итог: для ЧПУ нужен try_files $uri $uri/ /index.php?$args; без промежуточного =404, плюс сохранение постоянных ссылок в WordPress после правки.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно