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

mod_rewrite HTTPS удалить «www»

Я пытаюсь подготовиться к предстоящему выпуску Chrome "Небезопасный дисплей" v56.

У меня есть веб-сайт: example.com

Я даю каждому клиенту поддомен вне службы: cust1.example.com, cust2.example.com, и т.д.

Несколько лет назад я настроил службу для приема www.cust1.example.com, www.cust2.example.comи т. д. В первую очередь потому, что клиенты всегда добавляли «www» перед всем. Я хотел убедиться, что они получили свой сайт, а не сообщение «недействительный домен».

Я купил подстановочный SSL-сертификат *.example.com для освещения сайтов клиентов. Очевидно, это не работает для www.cust1.example.comи т. д. Большинство моих клиентов не использовали HTTPS, так что это не было проблемой.

Современные браузеры форсируют https, теперь это становится проблемой.

Я пробовал использовать mod_rewrite, чтобы решить эту проблему.

RewriteCond %{HTTP_HOST} ^www\.([^\.]+)\.example\.com$ [NC]
RewriteCond %{SERVER_PORT} =443
RewriteRule ^(.*)$ https://%1.example.com/$1 [R=302,E=nocache:1,L]

Примечание. Я использую 302 при тестировании решения, поэтому я случайно не помещаю перенаправление в кеш браузера и никогда не смогу изменить его снова.

Проблема в том, что когда вы запускаете HTTPS в браузере, перенаправление, предоставленное обратно с сервера, по-прежнему вызывает ошибку ERR_CERT_COMMON_NAME_INVALID, прежде чем оно сможет перенаправить, чтобы удалить «www» и перейти на страницу с действующим сертификатом.

Как удалить префикс "www" в HTTPS-трафике без запуска браузера Не является безопасным ответ?

Это перенаправит www.example.com на https://example.com

RewriteEngine On
RewriteCond %{HTTPS} =on
RewriteCond %{HTTP_HOST} ^www\.
RewriteRule ^(.*)$ https://example.com/$1 [R,QSA,L]