Решение проблемы с ЧПУ (человекочитаемыми 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.