Рассмотрим типовые задачи по созданию редиректов в Битрикс. Как правило все сводится к переадресации с 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 минут


Поработаем?

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