Рассмотрим типовые задачи по созданию редиректов в Битрикс. Как правило все сводится к переадресации с www на без www и наоборот, переадресации с http на https и наоборот, а также различные комбинации этих действий. Мы рассмотрим эти и некоторые другие ситуации. 

Для начала рассмотрим редирект с www на без www, при этом в процессе будем проверять доступность https и если есть возможность использования https то будет редиректить еще и на него

    # Удалить www
RewriteCond %{ENV:HTTPS} on
    #Если включен https
RewriteRule .* - [E=SSL:s]
    #То создаем переменную  ssl с текстом s
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
    # Проверяем, содержит ли домен www в начале URL.
RewriteRule ^(.*)$ http%{ENV:SSL}://%1/$1 [R=301,L]
    # Перенаправляем удаляем www

Если требуется выполнить обратное действие и перенаправить весь сайт на www (попутно делая проверку на возможность подключения через https) делаем следующее

    # Добавить www
RewriteCond %{ENV:HTTPS} on
    #Если включен https
RewriteRule .* - [E=SSL:s]
    #То создаем переменную  ssl с текстом s
RewriteCond %{HTTP_HOST} !^www\.(.*) [NC]
    # Если нет www в начале домена
RewriteRule ^(.*)$ http%{ENV:SSL}://www.%{HTTP_HOST}/$1 [R=301,L]
    #Подставляем www и https если он включен.

Если требуется сделать редирект с http на https код будет короче

RewriteCond %{HTTPS} off
   # Проверяем наличие https в URL.
RewriteCond %{REQUEST_URI} !^/bitrix/admin/1c_exchange\.php$ [NC] 
   #  Исключим обмен с 1С, ему требуется только 200 
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
   # Перенаправляем протокол на http.

Решили по какой-то причине перенаправить сайт на http с https - вам поможет данный кусок кода

RewriteCond %{HTTPS} on
   # Проверяем наличие https в URL.
RewriteRule ^.*$ http://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
   # Перенаправляем протокол на http.

Порой возникает потребность скрыть index.php, для этого пользуемся этим

RewriteCond %{REQUEST_URI} ^(.*)/index\.php$
   # URL cодержит index.php в конце.
RewriteCond %{REQUEST_METHOD} =GET
   # Выявляем GET запрос в URL (не POST).
RewriteRule ^(.*)$ %1/ [R=301,L]
   # Удалить index.php из URL.

Хотите добавить закрывающий слэш в конце url

RewriteCond %{REQUEST_URI} !(.*)/$
   # Если слеша в конце нет.
RewriteCond %{REQUEST_FILENAME} !-f
   # Не является файлом.
RewriteCond %{REQUEST_URI} !\..+$
   # В URL нет точки (файл).
RewriteCond %{REQUEST_URI} ^(.+)$
 # В URL есть хоть один символы
RewriteRule ^(.*)$ $1/ [L,R=301]
   # Добавляем слеш в конце.

PS: если что все эти строки кода вставляются в файл .htaccess

Готовы сделать всю работу за Вас
от325
  • 30 минут


Поработаем?

Опишите свой запрос, мы расчитаем стоимость вашей задачи.