переадресация на https и обратно

orphelin
На сайте с 02.07.2006
Offline
261
1518

Добрый вечер!

Поделитесь опытом пожалуйста,

надо на сайте обращение к некоторым страницам зашифровать (ЛК пользователя на сайте).

Таких страниц по пальцам пересчитать: 5-6 штук всего.

С этой задачей в принципе справился (через

if (нужная страница и  $_SERVER['SERVER_PORT'] != '443') {

header('HTTP/1.1 301 Moved Permanently');
header('Location: https://www.site.ru')
}

не знаю насколько правильно правда :)

Вопрос больше в другом - как при заходе на обычные страницы сайта после ЛК переадресовать на http? делал таким же способом, выходит циклическая переадресация :(

Как вообще в таких случаях поступают в плане алгоритма?

LEOnidUKG
На сайте с 25.11.2006
Offline
1762
#1

посадить всё на https и не парить мозги.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
FollowLocation
На сайте с 19.07.2013
Offline
12
#2

orphelin,

 header('Location: http://www.site.ru?notredir=1') 

А вообще ЛК должен соответствовать какому-то шаблону УРЛ. Допустим, что он лежит в папке client. Тогда при обращении к любому файлу, из этой папки редиректим на https. В противном случае - на http.

	if ((substr ($_SERVER['REQUEST_URI'], 0, 7) == '/client') and (!$_SERVER['HTTPS'])) {
header('HTTP/1.1 301 Moved Permanently');
header('Location: https://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
} else {
if ($_SERVER['HTTPS']) {
header('HTTP/1.1 301 Moved Permanently');
header('Location: http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
}
}
atseo
На сайте с 03.08.2013
Offline
55
#3

После того, как перенесли один сайт на https, тиц обнулился на месяц. Предупредите клиента заранее.

[umka]
На сайте с 25.05.2008
Offline
456
#4

В начале каждой страницы, где нужен https, добавляете

<?
if (!$_SERVER['HTTPS']) {
header("Location: https://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'], true, 301);
exit;
}
?>

Ну а на страницах, где не нужен https, соответственно:

<?
if ($_SERVER['HTTPS']) {
header("Location: http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'], true, 301);
exit;
}
?>

Разумеется, если на одной странице нужно [зачем-то] использовать при различных условиях и http и https, то нужно эти случаи обрабатывать дополнительно.

Лог в помощь!
A1
На сайте с 04.09.2013
Offline
18
#5
orphelin:
Поделитесь опытом пожалуйста,
надо на сайте обращение к некоторым страницам зашифровать (ЛК пользователя на сайте).
Таких страниц по пальцам пересчитать: 5-6 штук всего.

Формально, если сайту нужен HTTPS, то он вообще не должен поддерживать HTTP, иначе теряется весь смысл.

Т.е. наиболее правильно - это вынести ЛК на отдельный поддомен, который поддерживает только HTTPS. В противном случае от прыжков с HTTP на HTTPS нет никакого практического смысла.

orphelin
На сайте с 02.07.2006
Offline
261
#6

FollowLocation,

спасибо, помогло, правда во второй if пришлось добавить что-то вроде

and !(substr ($_SERVER['REQUEST_URI'], 0, 7) == '/client')

иначе опять в цикл уходило)

FollowLocation
На сайте с 19.07.2013
Offline
12
#7

orphelin, да, действительно недодумал. В ЛК зацикливание получается в моем варианте. Вообще можно немножко упростить и оптимизировать код:

if ((substr ($_SERVER['REQUEST_URI'], 0, 7) == '/client') and (!$_SERVER['HTTPS'])) {
header('Location: https://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'], true, 301);
die();
}

if ((substr ($_SERVER['REQUEST_URI'], 0, 7) != '/client') and ($_SERVER['HTTPS'])) {
header('Location: http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'], true, 301);
die();
}
T7
На сайте с 12.01.2005
Offline
206
#8

ИМХО лучше это делать на стороне фронтэнда. Все равно сертификаты там прописывать будете, почему бы туда не вынести. Я у себя на NGINX так и сделал с личными кабинетами.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий