Jump to content
  • entries
    4
  • comments
    28
  • views
    1,683

Как же сделать редирект на HTTPS и не получить циклическую переадресацию

spectre

888 views

На форуме каждый день появляется куча тем что "подключили SSL и все сломалось, циклический редирект и тп"

 

В подавляющем большинстве случаев нужен редирект с www на без и на https с без

 

Первым делом отключаем редиректы в панели хостинга, до добра они никогда не доводят и делаем сами

 

Инструкция для Apache т.к. почти на всех хостингах используется он

 

Все правила редиректов нужно вставлять в файл .htaccess который лежит в корне магазина в этот блок после RewriteBase / !

image.thumb.png.4482f607666ebb6d6c219f4b84990051.png

 

www редирект простой

 

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

 

с HTTPS все интереснее, т.к. разные хостинги используютт разные сборки вебсерверов и методы определения HTTPS они разные

 

Вторая часть правила у нас будет неизменная

 

RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

 

А вот первую придется выбрать из

 

RewriteCond %{HTTP:SSL} !=1 

RewriteCond %{HTTPS} =off 

RewriteCond %{SERVER_PORT} !^443$

RewriteCond %{ENV:HTTPS} !on

RewriteCond %{HTTP:X-Forwarded-Proto} !https

RewriteCond %{HTTP:X-HTTPS} !1

Этого хватит для почти всех хостингов 

 

Расскажу как понять какой тип определения HTTPS вам нужен

 

открываем файл index.php

и пишем туда

 

echo '<pre>';
print_r($_SERVER);
echo '</pre>';

 

открываем сайт по http и видим что-то подобное

 

 

image.thumb.png.13ebcb8feda9fe607ce87baa18f775ff.png

 

ищем знакомые слова из блока с редиректами

 

и видим

 

[HTTP_X_FORWARDED_PROTO] => http

 

Значит у нас получится конструкция такого рода

 

#Правила для редиректа
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
#Правила для с www на без
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

 

если хотите чтобы robots.txt был доступен роботам по http

то первым правилом этого блока нужно добавить

 

RewriteCond %{REQUEST_FILENAME} !^robots.txt$ [NC]

 

 

Если вам лень читать это все и вы просто промотали сюда - подберите просто методом тыка, это занимает 5 минут

 

 

Спасибо за внимание, ваш spectre

 

  • +1 10


2 Comments


Recommended Comments

как понять на данный момент на сайте есть циклическая переадресация или нет? 

чтоб зря не делать эти манипуляции 

Share this comment


Link to comment
16 часов назад, Vetlucky777 сказал:

как понять на данный момент на сайте есть циклическая переадресация или нет? 

чтоб зря не делать эти манипуляции 

 

Если бы была - сайт бы не открывался)

  • +1 1

Share this comment


Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.