Правильные редиректы на Битрикс (с www на без www с http на https и обратно)
от v2Team
Рассмотрим типовые задачи по созданию редиректов в Битрикс. Как правило все сводится к переадресации с 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
Поработаем?
Опишите свой запрос, мы расчитаем стоимость вашей задачи.