Задать вопрос

Как настроить NGINX для ЧПУ Wordpress?

Здравствуйте, помогите заставить работать .htaccess на Nginx + Php-fpm

Есть сайт на Wordpress, в качестве панели использую VestaCP последней версии.

Раньше мне достаточно было выбрать шаблон Шаблон WebNGINX "wordpress2" для домена. После установки последней версии(16) не работают все внутренние ссылки с этим шаблоном. Главная грузится должным образом, а вот внутренние выдают 404

Нашел такую инструкцию (goo.gl/uik5eU):
"try_files $uri $uri/ /index.php?$args;" /home/мой пользователь/conf/web/.

"try_files $uri $uri/ /index.php?$args;" Needs to be added to the location section of each website you host.

Пробовал править шаблон wordpress2, находящийся по адресу
/usr/local/vesta/data/templates/web/nginx/php-fpm/wordpress2.tpl
/usr/local/vesta/data/templates/web/nginx/php-fpm/wordpress2.stpl

Но там уже присутствует этот код в первой секции location. Приведу полный конфиг шаблона wordpress2:
server {
    listen      %ip%:%web_port%;
    server_name %domain_idn% %alias_idn%;
    root        %docroot%;
    index       index.php index.html index.htm;
    access_log  /var/log/nginx/domains/%domain%.log combined;
    access_log  /var/log/nginx/domains/%domain%.bytes bytes;
    error_log   /var/log/nginx/domains/%domain%.error.log error;

    location = /favicon.ico {
        log_not_found off;
        access_log off;
    }

    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }

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

        location ~* ^.+\.(jpeg|jpg|png|gif|bmp|ico|svg|css|js)$ {
            expires     max;
        }

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

            fastcgi_pass    %backend_lsnr%;
            fastcgi_index   index.php;
            include         /etc/nginx/fastcgi_params;
        }
    }

    error_page  403 /error/404.html;
    error_page  404 /error/404.html;
    error_page  500 502 503 504 /error/50x.html;

    location /error/ {
        alias   %home%/%user%/web/%domain%/document_errors/;
    }

    location ~* "/\.(htaccess|htpasswd)$" {
        deny    all;
        return  404;
    }

    include     /etc/nginx/conf.d/phpmyadmin.inc*;
    include     /etc/nginx/conf.d/phppgadmin.inc*;
    include     /etc/nginx/conf.d/webmail.inc*;

    include     %home%/%user%/conf/web/nginx.%domain%.conf*;
}


службы рестартил
service nginx restart
service php-fpm restart (на всякий пожарный)

Если выбрать Шаблон WebNGINX "wordpress" то внутренние не выдают больше 404, а просто показывают контент главной. Люди добрые, помогите как можно быстрее наладить работу ЧПУ на Nginx для Wordpress. До обновления VestaCP до 16 версии все с шаблонами работало на ура...

Жду ваших мнений, решений, что я делаю не так и рекоммендаций

P.S.
Свежеустановленный wordpress-4.5.2-ru_RU ведет себя аналогично на шаблоне WebNGINX "wordpress2" - выдает 404, на шаблоне "wordpress" показывает главную
  • Вопрос задан
  • 12607 просмотров
Подписаться 5 Оценить Комментировать
Решения вопроса 1
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
Все, что нужно для ЧПУ в WordPres + Nginx это:

1. try_files $uri $uri/ /index.php?$args; в конфиге
2. Пересохранить пермалинки (WordPress admin - Settings - Permalinks)

Если не работает - проблема в другом месте. Надо смотреть логи, начните с Nginx access.log и error.log
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@nikolayvaganov
В корневой локейшен :
if (!-e $request_filename ) { rewrite ^(.*)$ /index.php?q=$1; }
Ответ написан
Здравствуйте, решил я перейти с Апача на php-fpm и стокнулся с проблемой, прошу помощи.
Я свой код в .htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>


Перевел в nginx как
location / {
if (!-e $request_filename){
rewrite ^(.*)$ /index.php break;
}
}


Вставляю вместо
location / {

        location ~* ^.+\.(jpeg|jpg|png|gif|bmp|ico|svg|css|js)$ {
            expires     max;
        }

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

            fastcgi_pass    127.0.0.1:9004;
            fastcgi_index   index.php;
            include         /etc/nginx/fastcgi_params;
        }
    }


Но почему то не работает. Кто может помочь с правильным кодом или может я делаю что-либо не так?
Коды выше не подходят или я их не так вставляю.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы