Как сделать редирект со слеша на без слеша, исключив папку /bitrix/

    При переходе на версию сайта без завершающего слеша в URL (например, с example.ru/page/ на example.ru/page) часто возникает задача сохранить работоспособность системных каталогов, таких как /bitrix/ в CMS «1С-Битрикс». Эта папка содержит скрипты и ресурсы, которые не должны обрабатываться правилами перенаправления. Разберём, как настроить редирект 301, исключив все вложенные пути внутри /bitrix/.

    Почему важно исключить папку /bitrix/

    Папка /bitrix/ используется для служебных файлов: административной панели, компонентов, модулей. Если на неё применить редирект с удалением слеша, это может привести к ошибкам 404, сбоям в работе админки и потере доступа к API. Поэтому любое правило перенаправления должно содержать условие-исключение для этой директории.

    Настройка через .htaccess (Apache)

    Самый распространённый способ - использование файла .htaccess в корне сайта. Ниже приведён рабочий код, который перенаправляет все URL с завершающим слешом на URL без слеша, но пропускает любые запросы, начинающиеся с /bitrix/:

    RewriteEngine On
    RewriteCond %{REQUEST_URI} !^/bitrix/ [NC]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)/$ /$1 [R=301,L]

    Разберём каждую строку:

    • RewriteEngine On - включает модуль mod_rewrite.
    • RewriteCond %{REQUEST_URI} !^/bitrix/ [NC] - проверяет, что запрошенный URI не начинается с /bitrix/. Флаг NC отключает учёт регистра.
    • RewriteCond %{REQUEST_FILENAME} !-f - дополнительная проверка: если запрос ведёт к реально существующему файлу (например, robots.txt), редирект не выполняется.
    • RewriteRule ^(.*)/$ /$1 [R=301,L] - захватывает часть URL до слеша и перенаправляет на тот же адрес без слеша. Статус 301 (постоянный редирект) рекомендован для SEO.

    Альтернативный вариант с условием на папку

    Если вы хотите исключить не только корневую папку, но и все вложенные подпапки (например, /bitrix/admin/, /bitrix/tools/), приведённое выше правило уже это делает, так как регулярное выражение ^/bitrix/ совпадает с любым путём, начинающимся с /bitrix/. Для надёжности можно добавить ещё одно условие:

    RewriteCond %{REQUEST_URI} !^/bitrix($|/)

    Этот вариант явно исключает как саму папку /bitrix (без слеша), так и все её содержимое.

    Настройка на Nginx

    Если ваш сервер работает на Nginx, конфигурация будет выглядеть иначе. Добавьте в блок server следующие директивы:

    location /bitrix/ {
        # ничего не делаем, просто пропускаем
    }
    
    location / {
        if ($request_uri ~ ^(.*)/$) {
            return 301 $1;
        }
    }

    Важно: первое правило location /bitrix/ должно быть выше, чем общее правило для корня. Это гарантирует, что запросы к папке /bitrix/ не будут обработаны редиректом.

    Проверка и отладка

    После внесения изменений обязательно проверьте работу сайта:

    • Откройте любой URL с завершающим слешом (например, example.ru/about/) - должен сработать редирект на example.ru/about.
    • Зайдите в админ-панель Битрикса по адресу example.ru/bitrix/admin/ - страница должна открыться без изменений в URL.
    • Используйте инструменты вроде curl или браузерные расширения для проверки HTTP-статуса.

    Возможные ошибки и их решение

    Ошибка 500 (Internal Server Error) - чаще всего возникает из-за синтаксической ошибки в .htaccess. Проверьте, что модуль mod_rewrite включён. Редирект не срабатывает - убедитесь, что файл .htaccess расположен в корневой директории сайта и имеет атрибуты чтения. Циклический редирект - проверьте, нет ли других правил, которые конфликтуют с текущим.

    Заключение

    Корректный редирект с сохранением папки /bitrix/ - это баланс между SEO-оптимизацией URL и стабильностью работы CMS. Используйте предложенные правила, предварительно протестировав их на staging-окружении. Если у вас остались вопросы, обратитесь к документации Apache или Nginx.

    Часто задаваемые вопросы