https://www.lexium.ru/2016/11/kak-zapretit-protokol-http-dlya-sajjta/

Как запретить протокол http для сайта?

Разгар дня. Пальцы набивают код, глаза напряженно всматриваются в монитор, неподалеку гудит принтер, выплевывая бумагу, цокают каблучки, переговариваются бухгалтера, пахнет крепким кофе. Обычная рабочая обстановка.

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

— Срочно! — говорит, — надо запретить на сайте компании протокол HTTP!

— Чего?, — поднимаю глаза от ровных строчек на экране.

— Юристы позвонили! Говорят нужно оставить только HTTPS!

Суть проблемы

В принципе, все к этому шло. Сразу скажу, что проблема решается тремя строчками в файле .htaccess, но об этом чуть ниже.

А суть в том, что в нашей стране есть закон о защите персональных данных. Мало того, что те кто их собирают (например, интернет-магазины, для оформления заказа) должны предупреждать покупателя. Предупреждать о том, что его ФИО, адрес, паспортные данные (если нужно), телефонный номер, e-mail и т.п. отправляются не просто так, а для обработки!

Мне всегда казалось, что это вообще-то логично. Иначе зачем я все это вписываю? Уж точно не для того, чтобы оно ушло в никуда. Но нет! Закон требует предупреждать.

Но и это еще не всё! Все отправляемые данные должны отправляться по шифрованному протоколу (HTTPS). Как говорится — приплыли.

Решение

Подивившись юридическим выкрутасам, зашел на сайт, открыл файл .htaccess и под строчкой RewriteEngine On, добавил еще три. Вот они:

RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Всё. Фокус сработал, поскольку протокол HTTPS уже был установлен. Просто теперь сайт будет доступен только по нему и не будет доступен по протоколу HTTP. В остальном, ничего не изменилось.

Кстати, если вы искали как отключить на сайте протокол HTTP (оставив только HTTPS) и вам помог этот рецепт, не стесняйтесь в благодарность заслать мне немного на чай с печеньками.))

Что касается самого HTTPS как явления…

Меня в этой ситуации напрягает лишь одно — навязывание HTTPS всем владельцам сайтов. Оно идет хоть и постепенно, но неуклонно.

Почему напрягает? Потому, что сертификат для этого протокола стоит денег. Это около 5000 руб (и выше) в год с нифига.

Т.е. к плате за хостинг и домены добавится еще и эта. Если расходы на первый и вторые, вполне обоснованы, то оплата сертификата — это «продажа воздуха».

Моя буйная фантазия запросто придумает еще десяток подобных вещей, за которые можно обязать платить веб-мастеров. Например, налог на сайт, или лицензия на использование трафика.

Это только кажется нереальным, а по факту вполне…  Было бы желание. И все это, само-собой, будет исключительно для блага владельцев и посетителей сайтов.

UPDATE: Не прошло и пяти лет, как появилась возможность получать сертификаты бесплатно. Сертификат Let’s encrypt. После его появления, перестал пользоваться платными и перешёл на хостинг, где эта возможность реализована.

UPDATE: Что делать, если нужно разрешить протокол HTTP только для конкретного IP?

Нужно к уже упомянутым трем строчкам добавить еще одну. При том добавить ее перед строкой с RewriteRule. Вот она.

RewriteCond %{REMOTE_ADDR} !92.57.214.12

Вы спросите: Зачем открывать HTTP-протокол для конкретного IP? Ведь HTTPS прогрессивнее, защищеннее, современнее, понтовее в коне-концов.

Дело в том, что к вашему сайту могут обращаться какие-нибудь ваши программы, парсеры и т.п., не умеющие общаться по HTTPS. Например 1C Бухгалтерия.

Конечно ее в итоге можно настроить, но не факт, что вы это сумеете своими силами или быстро, а работать надо вот уже прямо сейчас. На этот случай вас и  выручит волшебная строчка.

Естественно, вместо 92.57.214.12 нужно указать нужный вам IP, с которого будете отправлять запросы.

alf2006x
Ответ написан 6 июля 2020 в 12:28. · Изменить грАватар

Как сделать то же самое для IIS 7.5 ?

Doctor Lexium
Ответ написан 13 июля 2020 в 09:28. · Изменить грАватар

Без понятия. Никогда не было необходимости пользоваться этим… продуктом от незабвенной M$. Да и устарел IIS 7.5 уже лет десять как.

Дмитрий
Ответ написан 21 июля 2021 в 11:22. · Изменить грАватар

Благодарю, мне помогло.

Doctor Lexium
Ответ написан 21 июля 2021 в 13:35. · Изменить грАватар

Спасибо за комментарий)

NoName
Ответ написан 2 декабря 2021 в 15:27. · Изменить грАватар

Недоступность сайта по http считается ошибкой. Должно быть работающее перенаправление http -> https.
Все нормальные сайты, включая Google. так настроены.

Doctor Lexium
Ответ написан 9 декабря 2021 в 14:52. · Изменить грАватар

Там и есть перенаправление))
Но вообще пост «слегка» устарел. Сейчас Апач используют всё реже, перенаправление с http -> https у многих хостеров можно включить прямо в админке хостинга, сертификаты Летс Энкрипт — бесплатны.
Пожалуй, пришло время написать новый пост на эту тему. Или нет…

Следить за темой по RSS

Напишите комментарий