Ниже приведен пример готовой конфигурации 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, в разделе Настройки — Постоянные ссылки, переключите флажок на опцию «Название записи» или «Произвольно».
Сработало. спасибо! странно что в основных доках это не указано
Огромная Вам благодарность за Ваш труд!))
Очень помогло в связке nginx+php-fpm.
Присоединяюсь ко всем вышеперечисленным благодарностям!
Спасибо ОГРОМНОЕ!!!
if (!-e $request_filename) {
rewrite ^.+/?(/wp-.*) $1 last;
rewrite ^.+/?(/.*\.php)$ $1 last;
rewrite ^(.+)$ /index.php?q=$1 last;
{ <—скобочку в другую сторону:) Спасибо за запись
Max, скобочка в примере — «в правильную сторону», т.к. она закрывает блок, который начался сразу после if. Вторая закрывающая скобочка закрывает первый блок location. 🙂
От души брат!!! Помог!!!!