Как настроить Nginx для постоянных ссылок WordPress

Я переключился с Apache на веб-сервер Nginx. Как настроить постоянные ссылки в блоге WordPress?

WordPress обладает способностью создавать собственную структуру URL-адресов для ваших сообщений в блогах и архивов. Существует три основных типа постоянных ссылок WordPress:

  • Безобразные: https://codeby.net/blogs/fail2ban_logo/
  • Привлекательные с использованием mod_rewrite:
  • Почти привлекательные с использованием PHP PATHINFO:

В Settings (Настройках) панели Permalinks, вы можете выбрать одну из наиболее распространенных структур постоянной ссылки следующим образом:

Как настроить Nginx для постоянных ссылок WordPress
Рисунок 01: постоянные ссылки WordPress: Выбор структуры для вашей постоянной ссылки

Как я использую «Привлекательные (Pretty)» постоянные ссылки с Nginx?

Отредактируйте ваш nginx.conf файл, для этого запустите:

$ sudo vi /etc/nginx/site-enabled/cyberciti.biz.conf

Отредактируйте/добавьте/прикрепите следующий блок местоположения в блок сервер:

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

Если ваш блог WordPress находится в /faq/ sub-directory, попробуйте выполнить следующее:

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

Сохраните и закройте файл. Перезапустите/перезагрузите ваш nginx север, а затем запустите:

$ sudo systemctl reload nginx

ИЛИ

$ sudo /usr/sbin/nginx -s reload

Вот пример моего config файла:

# Upstream to abstract backend connection(s) for PHP.
upstream php {
  server unix:/run/php/php7.0-fpm.sock;
}
server {
    server_name www.cyberciti.biz;
    root        /var/www/html;
 
    location /faq/ {
         try_files $uri $uri/ /faq/index.php?$args;
    }
 
    #Add trailing slash to */wp-admin requests.
    rewrite /faq/wp-admin$ $scheme://$host$uri/ permanent;
 
    # Directives to send expires headers and turn off 404 error logging.
    location ~* ^.+\.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
       access_log off; log_not_found off; expires max;
    }
 
# Pass all .php files onto a php-fpm/php-fcgi server.
    index index.php;
    location ~ [^/]\.php(/|$) {
        fastcgi_split_path_info ^(.+?\.php)(/.*)$;
        if (!-f $document_root$fastcgi_script_name) {
                return 404;
    }
# This is a robust solution for path info security issue and works with "cgi.fix_pathinfo = 1" in /etc/php.ini (default)
    include /etc/nginx/fastcgi_params;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_pass php;
 }
}

Перевод: Анна Давыдова
Источник: cyberciti.biz

Это интересно:

3 комментария

  1. Заработало!!! Только путь к конф файлу другой чуть оказался:
    /etc/nginx/sites-available/ВашСайт.ru

    Спасибо.

Добавить комментарий для Дмитрий Отменить ответ

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