Главная/Статьи/Drupal 7: ЧПУ на Nginx
Drupal

Drupal 7: ЧПУ на Nginx

Решение проблемы с ЧПУ (человекочитаемыми URL) на Drupal 7 при миграции сайта на сервер Nginx. Проблема заключалась в отсутствии необходимых строк конфигурации.

Решение

Требуется добавить две ключевые конфигурационные секции в блок server.

Обработка запросов:

location / {
    try_files $uri $uri/ @rewrite;
}

Перенаправление на index.php:

location @rewrite {
    rewrite ^/(.*)$ /index.php?q=$1 last;
}

Полный конфиг хоста

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/html/mysite.com;
    index index.php index.html index.htm index.nginx-debian.html;

    server_name mysite.com;

    location / {
        try_files $uri $uri/ @rewrite;
    }

    location @rewrite {
        rewrite ^/(.*)$ /index.php?q=$1 last;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    }

    location ~ /\.ht {
        deny all;
    }
}

Это базовый конфиг без оптимизаций. Блок location / использует директиву try_files для проверки существования файлов, а location @rewrite перенаправляет запросы на index.php с параметром q.