apache перенаправляет http на https и www на не www - PullRequest
20 голосов
/ 30 марта 2012

В основном я хочу перенаправить запрос на использование 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 на не www, а затем на ssl

Ответы [ 6 ]

23 голосов
/ 30 марта 2012

Вам придется переоформить свой сертификат как для www, так и без www.

Если кто-то подключится к вашему сайту через доменное имя, которое не входит в ваше общее имя, он получит предупреждение.

Процесс обсуждения ssl происходит до любогоответ от сервера (в вашем случае, перенаправление), поэтому во всех случаях ваши посетители будут получать предупреждение при использовании домена, который не входит в ваше общее имя.

17 голосов
/ 30 марта 2012

Вы можете получить то, что вам нужно, из HTTP_HOST

RewriteEngine On 
RewriteCond %{HTTPS} off 
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.*)$ [NC]
RewriteRule (.*) https://%1%{REQUEST_URI} [L,R=301]

Таким образом, он всегда будет получать хост без субдомена.

3 голосов
/ 20 января 2017
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]
2 голосов
/ 22 мая 2013

Если вы используете бесплатный аккаунт CloudFlare, то это проблема.Бесплатный аккаунт CloudFlare НЕ поддерживает SSL-сертификаты.Чтобы продолжить использовать бесплатную учетную запись CloudFlare с SSL-сертификатом, просто перейдите в настройки DNS в CloudFlare и снимите оранжевое облако с вашего домена и с cname WWW.Это решит вашу проблему и приведет к тому, что и www, и не www будут перенаправлены на https.

Также обязательно добавьте этот код в ваш файл .htaccess:

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Тогда все должно работать!

0 голосов
/ 29 августа 2018

Проверьте это:

RewriteEngine On
RewriteCond %{HTTP_HOST}#%{HTTPS}s ^www\.([^#]+)#(?:off|on(s)) [NC]
RewriteRule ^ http%2://%1%{REQUEST_URI} [R=301,L]
RewriteCond %{HTTPS} !=on
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
0 голосов
/ 23 июня 2015
RewriteEngine On 
RewriteCond %{HTTPS} off 
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.*)$ [NC]
RewriteRule (.*) https://www.%1%{REQUEST_URI} [L,R=301]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...