Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Блог spectre

  • записів
    6
  • коментаря
    152
  • перегляд
    5 471

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


spectre

2 683 перегляди

На форуме каждый день появляется куча тем что "подключили 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 16

10 коментарів


Recommended Comments

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

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

Надіслати
16 часов назад, Vetlucky777 сказал:

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

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

 

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

  • +1 1
Надіслати
Цитата

 

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

 

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]

RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

 

Підкажіть, будь ласка, почему может быть так, что когда я ставлю этот редирект, то у формы входа в админку пропадают бутстраповские иконки, а сама админка перестаёт меня пускать? Если я уже в админке, то после этого редиректа вылетаю из неё при перезагрузке. Кроме того, на фронте в консоли появляются ошибки типа шрифты что то там некорректно делают с заголовками запросов, типа междоменный яваскрипт запрос, причём домен там тот же самый, но с www и без. 

Когда этот редирект убираю, всё работает.

Доп инфа (если это имеет значение)

Оксторе, включен сеопро.

На сервере в свойствах домена есть строка "Псевдонимы", там прописан домен с www. Он был прописан автоматически. Если его убрать, перестаёт работать бесплатный SSL сертификат.

Куда копать, где смотреть? @spectre

Змінено користувачем florapraktik
Надіслати
В 28.01.2023 в 22:00, florapraktik сказал:

спасибо. т.е. это "проблема" на сервере?

это не "проблема" , вам нужно выяснить что вы хотите в итоге получить и сделать как хочется 

 

варианты которые не описаны в статье встречаются раз в 5 лет 

Надіслати
28.01.2023 в 22:04, spectre сказал:

это не "проблема" , вам нужно выяснить что вы хотите в итоге получить и сделать как хочется 

 

варианты которые не описаны в статье встречаются раз в 5 лет 

Я хочу сделать редирект с ввв на без ввв. И оно как бы получается - редиректит. Но перестаёт пускать в админку. А если уже в админке, то выбрасывает из неё. 

Если редирект убираю, то пускает и не выбрасывает.

Надіслати

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.