.htaccess перенаправить https на http не работает - PullRequest
3 голосов
/ 05 июня 2010

Я пытаюсь поймать любой трафик https в начало моего сайта так:

https://www.domain.com

перенаправляется на:

http://www.domain.com

Однако другие субдомены необходимо перенаправить в другое место. По большей части это все работает, кроме перенаправления https -> http. Вот мой файл .htaccess на данный момент:

RewriteEngine On

RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI}

RewriteCond %{HTTP_HOST} ^domain\.com [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]

RewriteCond "%{HTTP_HOST}" !^www.* [NC]
RewriteCond "%{HTTP_HOST}" ^([^\.]+).*$
RewriteRule ^(.*)$ https://secure.domain.com/a/login/%1 [L,R=301]

Казалось бы, этот бит:

RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI}

не работает, как я себе представляю. На самом деле, похоже, он вообще не перенаправляет.

В другом подкаталоге у меня есть противоположное действие, которое прекрасно работает:

RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

так что мое мышление противоположное должно было сделать работу, но, похоже, нет.

Есть мысли у кого-нибудь?

EDIT

Я думаю, что это может быть связано с тем, что на сервере есть ssl-сертификат, который интернет-провайдер использует для предоставления общего https-адреса вашему сайту. Например, если у вас есть сайт по адресу:

http://www.yourdomain.com

Вы можете получить доступ к той же учетной записи контента / хостинга через https, используя:

https://server100.securedomain.com/yourdomain.com

Может быть так, потому что, когда я набираю https в браузере, мне подают общий сертификат, и потому что он не соответствует имени домена, которое я ввел, я получаю предупреждение безопасности о недоверенном сертификате останавливает перенаправление?

РЕДАКТИРОВАТЬ 2

Глядя на заголовки сервера, я думаю, что я прав с моим предположением выше. Сервер возвращается:

The host name in the certificate is invalid or does not match

Остановит ли это перенаправление?

Ответы [ 3 ]

4 голосов
/ 10 января 2011

Только что понял, что я никогда не закрывал это, поэтому для кого-то еще, пытающегося решить это, я сделаю это сейчас.

Короче, поймайте все перенаправления https -> http, которые я пытался достичьне будет работать, потому что сервер сначала обслуживает сертификат, который генерирует предупреждение безопасности.Это происходит перед редиректом по очевидным причинам безопасности, следовательно, редирект не работает так, как я хотел.

Надеюсь, это поможет кому-то еще.

0 голосов
/ 09 марта 2012

Я знаю эту старую ветку, но я только что нашел ответ, и это может кому-то помочь в будущем:

убедитесь, что файл виртуальных хостов для сервера ssl имеет:

AllowOverride All

скорее всего, это файл виртуального хоста вашего сервера по умолчанию, поэтому вы можете сделать это с http

0 голосов
/ 05 июня 2010

Если «оно вообще не перенаправляется», я думаю, что

RewriteCond %{HTTPS} on

не получается по какой-то причине. Я видел это в примере:

RewriteCond %{SERVER_PORT} ^443$ [OR]
RewriteCond %{HTTPS} =on

Может быть, вам нужны оба?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...