2012-03-30 3 views
15

в основном то, что я хочу перенаправить Аль запрос использовать HTTPS вместо HTTPапач переадресации HTTP на HTTPS и WWW к не WWW

У меня есть это в моем 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 ?

+0

Какие общие имена в вашем сертификате? Большинство центров сертификации ставят www и non-www в общем имени, когда выдают сертификат для предотвращения такого рода проблем. –

+0

сертификат сделан для domain.com (non www) В основном я хочу, чтобы все trafic переходили на NON www и https – misulicus

ответ

12

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

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

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

+1

+1, но вы должны действительно изменить строку RewriteRule на: 'RewriteRule^https: //% 1% {REQUEST_URI} [L, R = 301] ' – anubhava

+0

@anubhava все сделано – baynezy

+0

Я не думаю, что этот ответ решит проблему OP, касающуюся посетителей, получающих предупреждение. –

18

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

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

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

+3

Очень хорошая точка – baynezy

2

Если вы используете бесплатную учетную запись 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] 

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

0
RewriteEngine On 
RewriteCond %{HTTPS} off 
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.*)$ [NC] 
RewriteRule (.*) https://www.%1%{REQUEST_URI} [L,R=301] 
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] 
+0

Хотя этот код может ответить на вопрос, предоставляя дополнительный контекст относительно того, почему и/или как этот код отвечает на вопрос, улучшает его долгосрочную ценность. –

Смежные вопросы