Во-первых, важно сделать не только перенаправление, но и чтобы ссылка после имени не менялась.
То есть, если мы заходим на http://example.com/catalog , нужно, чтобы посетитель переправлялся на https://www.example.com/catalog - то есть часть /catalog
должна сохраниться.
Во-вторых, важно, чтобы редирект был ОДИН.
То есть, не так:
- заходим сюда http://example.com/catalog
- идет редирект на https https://example.com/catalog
- а потом уже на основное имя с https http://www.example.com/catalog
А вот так сразу:
- заходим сюда http://example.com/catalog
- сразу оказываемся здесь https://www.example.com/catalog
Эту задачу решает следующий код в .htaccess, вставлять который нужно сразу после RewriteEngine on
:
(все варианты одинаковые, отличается только первая строка RewriteCond
)
Для ISPManager БЕЗ nginx и/или общего случая, когда apache отвечает напрямую
#
# !!! не забыть заменить имя сайта на наше !!!
#
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^example.com [NC]
RewriteRule (.*) https://example.com%{REQUEST_URI} [R=301,L]
(код взят отсюда)
Для ISPManager с nginx
#
# !!! не забыть заменить имя сайта на наше !!!
#
RewriteCond %{HTTP:X-Forwarded-Proto} !https [OR]
RewriteCond %{HTTP_HOST} !^example.com [NC]
RewriteRule (.*) https://example.com%{REQUEST_URI} [R=301,L]
Для Битрикс Веб-Окружения и/или общего случая, когда apache стоит за nginx:
#
# !!! не забыть заменить имя сайта на наше !!!
#
RewriteCond %{HTTP:HTTPS} !YES [OR]
RewriteCond %{HTTP_HOST} !^example.com [NC]
RewriteRule (.*) https://example.com%{REQUEST_URI} [R=301,L]
Для Timeweb
#
# !!! не забыть заменить имя сайта на наше !!!
#
RewriteCond %{HTTP:X-HTTPS} !1 [OR]
RewriteCond %{HTTP_HOST} !^example.com [NC]
RewriteRule (.*) https://example.com%{REQUEST_URI} [R=301,L]