Назад | Перейти на главную страницу

Принудительный переход httpS://example.com на другой сайт

У меня есть несколько сайтов, размещенных на веб-сервере Apache.

Сайт A - HTTPS, а сайт B - HTTP.

Когда люди переходят на сайт B, используя HTTPS (я не знаю, почему они это делают, потому что на нем нет HTTPS и никогда не было, но они это делают), они направляются на сайт A. Как я могу это исправить и оставить их включенными? Сайт Б?

К сожалению, нет способа поймать это до того, как пользователи попадут на ваш веб-сервер (через DNS или что-то в этом роде). Создайте виртуальный хост для обработки запросов https для SITEB и перенаправления их на http.

Вы также можете сделать то же самое с rewritecond / rewriterule на виртуальном хосте SITEA https.

По сути, это противоположно следующему: http://wiki.apache.org/httpd/RedirectSSL

Это происходит потому, что оба ваших домена обслуживаются одним и тем же процессом httpd. В вашей конфигурации server / vhost секция конфигурации, предназначенная для прослушивания порта 443, доступна только для SITEA.

Пользователи, вероятно, посещают https для SITEB из-за плагинов браузера httpseverywhere (или аналогичных), которые перенаправляют их на https-версию веб-сайтов. Теперь, когда они посещают https://site-b.com, сервер apache (поскольку SITEB указывает на IP-адрес вашей машины) ищет конфигурацию порта 443; и начинает обслуживать страницы SITEA.

Я бы посоветовал вам начать обслуживать своих клиентов оба ваших веб-сайта через HTTPS (Letsencrypt FTW) вместо перенаправления с https на http. В качестве альтернативы вы можете добавить следующий набор правил в конфигурацию вашего Apache SITEA Vhost:

RewriteEngine On
RewriteCond %{HTTP_HOST} SITEB [NC]
RewriteRule ^ http://SITEB%{REQUEST_URI} [R=301,L]