Решение, как сделать большинство редиректов в NGINX на примере конфигурации веб-окружения BitrixVM
Примеры популярных редиректов в NGINX для 1С-Битрикс на основе конфигурации веб-окружения BitrixVM (VMBitrix)
# Redirect to ssl if need if (-f /home/bitrix/www/.htsecure) { rewrite ^(.*)$ https://$host$1 permanent; }
if ($scheme = http) { return 301 https://$server_name$request_uri; }
if ($host ~* www.(.*)) { set $host_without_www $1; rewrite ^(.*)$ http://$host_without_www$1 permanent; }
if (!-f $request_filename) { rewrite [^/]$ $uri/ permanent; }
if (!-f $request_filename) { rewrite ^/(.*)/$ /$1 permanent; }
if ($request_uri ~ "^(.*)index.(?:php|html)") { return 301 $1; }
Если для определенных разделов данный редирект нужно отключить, то в маску добавляем разделы исключения:
if ($request_uri ~ "^(/(?!personal|catalog).*)index.(?:php|html)") { return 301 $1; }
Чтобы сохранить параметры в адресной строке, нужно задать:
if ($request_uri ~ "^(.*)index.(?:php|html)") { return 301 $1$is_args$args; break; # break нужен в том случае, #если происходит склейка нескольких редиректов одновременно }
rewrite /catalog/section_1/section_1_1/ /catalog/section_1_1/ permanent;
location = /robots.txt { rewrite ^/robots.txt$ /robots2.txt; }
rewrite /deleted-url/(.*) /$1 permanent;
if ($request_uri ~ "/deleted-url/(.*)") { return 301 $1; }
server { server_name domain.com www.domain.com; rewrite ^ $scheme://www.new-domain.com; }
server { server_name domain.com www.domain.com; rewrite ^ $scheme://www.new-domain.com$request_uri permanent; }
server { ... server_name domain domain.*; return 301 https://$host$request_uri; }