Сниппет NGINX для ЧПУ в WordPress

Ниже приведен пример готовой конфигурации NGINX, позволяющей CMS WordPress корректно отображать ЧПУ (человеко-понятные урлы). В раздел location / конфигурационного файла сайта на WP (/etc/nginx/sites-available/sitename.ru) добавьте следующие строки:

if (!-e $request_filename) {
   rewrite ^.+/?(/wp-.*) $1 last;
   rewrite ^.+/?(/.*.php)$ $1 last;
   rewrite ^(.+)$ /index.php?q=$1 last;
}

Полный листинг конфигурационного файла:

server {
    root /var/www/sitename.ru/public_html;
    index index.php index.html index.htm;
    server_name sitename.ru;
     
     location / {
                try_files $uri $uri/ =404;
                if (!-e $request_filename) {
                   rewrite ^.+/?(/wp-.*) $1 last;
                   rewrite ^.+/?(/.*.php)$ $1 last;
                   rewrite ^(.+)$ /index.php?q=$1 last;
                }
        }
        location ~ .php$ {
                try_files $uri =404;
                fastcgi_split_path_info ^(.+.php)(/.+)$;
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                include fastcgi_params;
        }
}

Теперь протестируйте конфиг перезапустите NGINX:

 

$ nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
$ service nginx restart

 

И в админ-панели WordPress, в разделе Настройки — Постоянные ссылки, переключите флажок на опцию  «Название записи» или «Произвольно».