Как запретить протокол 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: Что делать, если нужно разрешить протокол HTTP только для конкретного IP?

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

RewriteCond %{REMOTE_ADDR} !92.57.214.12

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

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

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

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

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *