301 Redirect в .htaccess сначала выдает предупреждение сертификата на исходный URL - PullRequest
0 голосов
/ 10 июля 2019

У моего сайта есть сертификат, но это не групповой сертификат. Так что это для example.com, а не для * .example.com.

Не проблема, я думал, я просто перенаправлю любого посетителя на нужный URL через mod_rewrite:

 RewriteEngine On
 RewriteBase /

 # Following two lines to strip machine name
 RewriteCond %{HTTP_HOST} !^example.com [NC]
 RewriteRule ^(.*)$ https://example.com%{REQUEST_URI} [L,R=301]

 # Following two lines make sure the https version is always served
 RewriteCond %{HTTPS} off
 RewriteRule (.*) https://example.com%{REQUEST_URI}  [L,R=301]

Теперь редирект действительно работает. Когда кто-то набирает https://www.example.com/page,, он в конечном итоге будет перенаправлен на https://example.com/page.

Но ...

В браузере сначала отображается предупреждение о том, что https://www.example.com небезопасно. Только при добавлении исключения оно будет перенаправлено на https://example.com/page, что не приводит к ошибке сертификата ...

Что я здесь не так делаю?

1 Ответ

1 голос
/ 10 июля 2019

Ничего.Согласование SSL происходит на уровне транспорта (TCP), а не HTTP (даже при использовании SNI ), но дело в том, что сертификат недействителен для запрошенного домена.Когда инициируется подключение к www., браузер запросит сертификат и сравнит URL-адрес с CN в сертификате, а поскольку его там нет, он выдаст предупреждение.

Для разрешенияВ этом случае вам понадобится сертификат, который включает имена ServerName и ServerAlias.Возможно, вы могли бы попробовать какой-нибудь DNS-провайдер, который предлагает DNS-перенаправление HTTP, но получить сертификат сейчас довольно просто .

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