HTTPS - это HTTP через TLS/SSL (см. RFC 2818), который сначала устанавливает соединение SSL/TLS перед отправкой любого HTTP-трафика. Любое перенаправление (через mod_rewrite
, пользовательский PHP-код или другое) всегда будет применяться после установления соединения SSL/TLS.
Неправильное выполнение этой проблемы на самом деле является проблемой безопасности, поскольку злоумышленник может переписать и перенаправить клиента до того, как сертификат будет проверен.
Если вы хотите перенаправить от https://domain.com
к https://www.domain.com
, сертификат, полученный для https://domain.com
должен быть действителен domain.com
(а затем, сертификат, полученный для https://www.domain.com
должен быть действительным для www.domain.com
).
(Вы можете использовать два различных сертификатов с сервера имен Индикация если два хоста подаются на тот же IP-адрес, но это довольно запутанным.)
Проще было бы получить сертификат, действительный для обоих domain.com
и www.domain.com
. Это можно сделать, используя один сертификат с несколькими записями альтернативного имени объекта. Большинство центров сертификации должны иметь возможность выдавать такие сертификаты. Некоторые делают это без дополнительной платы.
Возможный дубликат [Переадресация https на не-www и http-www] (http://stackoverflow.com/questions/10725357/redirect-https-to-non-www-and-http-to-www) – Bruno
@Bruno Посмотрел на многие случаи, но никто не определяет ответ, полученный deceze. – williamcarswell
Не уверен, что вы имеете в виду.Я мог бы более или менее скопировать/вставить ответ, который я дал другому вопросу, чтобы ответить на ваш вопрос. (Более или менее то же, что и то, что сказал deceze, единственное, что он не говорит, это то, что вы могли бы достичь того, чего хотите, имея сертификат, действительный для обоих.) Во всем этом есть ряд вопросов. Вот еще один пример на SF: http://serverfault.com/a/360985/47187 – Bruno