Правила редиректов для NGINX (режим FPM)

13.05.2020

Для работы сайтов в режиме PHP-FPM (nginx) стоит учитывать, что настройки редиректорв из .htaccess игнорируются (не обрабатываются Nginx). Для создания правил требуется внести изменения в конфигурационный файл nginx (vhosts).

Примеры редиректов:

// переадресация с http на https:
// в секцию конфига добавить после строки listen * внутрь блока location @php:
rewrite ^(.*) https://domain.com$1 permanent;

// переадресация с www на версию без www по https:
// в секцию конфига добавить после строки listen * ssl http2 внутрь блока location @php:
if ($host ~ ^www\.)
   {
     rewrite ^(.*)$ https://domain.com$1 permanent;
   }	

// для добавление символа / в конце URL:
// в секцию конфига (https) добавить после строки root $root_path; и перед строкой location
rewrite ^([^.\?]*[^/])$ $1/ permanent;


// отключить возможность вызвать site.com/index.php в адресной строке браузера:
if ($request_uri ~* "^(.*/)index\.php$") 
   {
     return 301 $1;
   }

// для удаления символов / в конце URL необходимо добавить после строки listen * ssl http2 внутрь блока location @php:
   if ($request_uri ~ ^(?P<left>[^?]*?)//+(?P<right>[^?]*)) {
    rewrite ^ $left/$right permanent;
    }

// замена пробелов на нижнее подчеркивание "_" в url на всех страницах сайта:
rewrite ^(.*)(\s|%20)(.*)$ $1_$3 permanent;