nginx https to http
Суть вот в чем - на сайте при определенном условии урл должен измениться с https на http.
if (strpos($url, 'http://') !== false) {
if ($_SERVER['HTTPS'] == "on") {
$url = "http://" . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
header("Location: $url");
exit;
}
}
Но редирект почему-то не работает. Когда я пыталась вручную в браузере изменить урл (https на http поменять) - меня перекидывало назад на http
Может быть проблема в nginx? Есть какое-то правило, которое не позволяет редирект на http?
Ответы (1 шт):
Нужно смотреть конфиг nginx. Без него мы не скажем есть ли там такое правило.
Некоторые хостеры позволяют настроить для домена редирект с http на https, в этом случае редирект произойдет ещё до вашего nginx.
Непосредственно в nginx решение вашей проблемы будет выглядеть как-то так:
server {
listen 443 ssl;
server_name blah-blah-blah;
# ...
location /ololo { # Нужный вам урл
if ($scheme = 'https') {
rewrite ^/(.*) http://$server_name/$1 permanent;
}
}
# ...
}
НО!
Я встречал конфигурации, когда в одной директиве
serverнастроены иhttp, иhttps(Чаще всего в них просто происходит редирект с http на https). В таком случае можно словить бесконечное перенаправление страницы. Нужно будет эту логику обработать.