Редиректы NGINX для Битрикс (BitrixVM, VMBitrix)

Решение, как сделать большинство редиректов в NGINX на примере конфигурации веб-окружения BitrixVM

Примеры популярных редиректов в NGINX для 1С-Битрикс на основе конфигурации веб-окружения BitrixVM (VMBitrix)

  1. Правила прописываем в файле конфигурации nginx конкретного хоста на BitrixVM:
  • Если сайт работает без SSL → /etc/nginx/bx/site_avaliable/bx_ext_domain.conf
  • Если сайт работает по SSL → /etc/nginx/bx/site_avaliable/bx_ext_ssl_domain.conf
  • После изменения файла не забываем перезагрузить nginx командой: systemctl restart nginx
    1. Проверить наличие кода в /etc/nginx/bx/site_enabled/s1.conf
      # Redirect to ssl if need
      if (-f /home/bitrix/www/.htsecure) { rewrite ^(.*)$ https://$host$1 permanent; }
    2. Создать в корне сайта .htsecure
    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;
    }
    • Условие RewriteCond обозначает совпадение с которым будет выполнено правило RewriteRule. При этом, используются символы:
    • . – Точка — это любой символ (но только один!).
    • ^ — Эта метка означает начала строки.
    • $ — Эта метка означает конец строки.
    • — Эта экранирующий слэш, позволяет считать следующий за ним символ, обычным символом.
    • () – Этот символ обозначает группировку.
    • ! – Метка отрицания.
    • + — Этот символ повторяется от 1 до 65536 раз.
    • ? — Этот символ повторяется 0 или 1 раз.
    • * — А этот символ повторяется от 0 до 65536 раз.
    • Флаги определяют дополнительные опции.
    • R — (redirect) — По умолчанию останавливает процесс преобразования, возвращает результат в браузер клиента, как редирект на данную страницу 302, MOVED TEMPORARY. Например флагу можно указать другой код результата, R=301 и он возвратит редирект клиенту с кодом 301 MOVED PERMANENTLY.
    • NC — (nocase) — Этот флаг отключает проверку регистра символов.
    • L — (last) — Флаг останавливает процесс преобразования, текущая ссылка считается окончательной.

    Продолжая использовать веб- сайт beta-code.ru, вы даете согласие на обработку файлов cookie, пользовательских данных (сведения о местоположении; тип и версия ОС; тип и версия Браузера; тип устройства и разрешение его экрана; источник откуда пришел на сайт пользователь; с какого сайта или по какой рекламе; язык ОС и Браузера; какие страницы открывает и на какие кнопки нажимает пользователь; ip-адрес) в целях функционирования сайта, проведения ретаргетинга и проведения статистических исследований и обзоров. Если вы не хотите, чтобы указанные данные обрабатывались, покиньте сайт.
    Принять