Apache перенаправляет http на https и www на non www
в основном то, что я хочу, это перенаправление al request для использования HTTPS вместо http
У меня есть это в моем htaccess, и он отлично работал:
Код:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</ifModule>
сегодня кто-то заметил, что, когда собираешься:
http://www.example.com он перенаправляет и показывает незащищенную связь.
Мой ssl настроен для не www-домена: mydomain.com
Поэтому мне нужно убедиться, что все запросы на сайт отправляются не на www и https:
Он отлично работает, если я приведу example.com, он перенаправляется на https://example.com
но с www.example.com он переходит на htts://www.example.com и показывает ошибку
что мне нужно добавить в мой код для перенаправления www на non www, а затем в ssl
Ответы
Ответ 1
Вы можете получить то, что вам нужно от HTTP_HOST
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.*)$ [NC]
RewriteRule (.*) https://%1%{REQUEST_URI} [L,R=301]
Таким образом, он будет получать хост всегда без субдомена.
Ответ 2
Вам придется повторно выдать свой сертификат как на www, так и без www.
Если кто-то подключается к вашему сайту с помощью имени домена, которое не входит в ваше общее имя, оно получит предупреждение.
Процесс ssl negociation имеет до любой ответ с сервера (в вашем случае перенаправление), поэтому во всех случаях ваши посетители получат предупреждение при использовании домена, который не находится в вашем общее имя.
Ответ 3
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://domain.com%{REQUEST_URI} [L,R=301,NC]
RewriteCond %{HTTP_HOST} ^www.domain.com [NC]
RewriteRule (.*) https://domain.com%{REQUEST_URI} [L,R=301,NC]
Ответ 4
Если вы используете бесплатную учетную запись CloudFlare, тогда это проблема. Бесплатная учетная запись CloudFlare НЕ поддерживает SSL-сертификаты. Чтобы продолжить использование бесплатной учетной записи CloudFlare с SSL-сертификатом, просто перейдите к настройкам DNS в CloudFlare и снимите оранжевое облако с вашего домена и выйдите из cname WWW. Это исправит вашу проблему и вызовет перенаправление WWW и non-www на https.
Также не забудьте добавить этот код в ваш .htaccess файл:
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Тогда все должно работать!
Ответ 5
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.*)$ [NC]
RewriteRule (.*) https://www.%1%{REQUEST_URI} [L,R=301]