2017-02-06 12 views
0

Я хочу свести к минимуму перенаправления, заставляя https и www.Как заставить SSL и WWW в одном перенаправлении?

Попытка получить ...

http://example.com 

... идти прямо ...

https://www.example.com 

... в одном редиректа. Не три, два, ни даже 19, которые я имел на одном этапе! Я застрял в перенаправлении для www. бит, а затем другое перенаправление для бит https.

В настоящее время есть это в моем .htacess:

RewriteEngine On 

RewriteCond %{HTTP_HOST} ^example.com$ 

RewriteRule ^(.*)$ https://www.example.com/$1 [R=301] 

Я собирался признать свое поражение, чувствуя, что это не возможно, чтобы объединить два правила в один ... но потом я обнаружил, Amazon.com есть это реализовано ! Интересно, как? Включает ли это что-то за пределами .htacess?

Screenshot of Amazon.com and their straight-to-the-point redirect

ответ

0

Попробуйте, как это,

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

Почти! Но это не заставляет www. который в этом случае необходим. Я был почти уверен, что https и www в одном правиле были невозможны, пока я не увидел, что Amazon делает это. Я бы не посмотрел !! –

+0

Вы уверены? он отлично работает для меня как на локальном, так и на живом сервере. –

+0

Да, www. не становится принудительным, просто https. Я пробовал много .htacess tweeks без успеха. Заставляет меня задаться вопросом, лежит ли ответ за пределами .htacess. –

0

Чтобы заставить HTTPS и WWW в одном перенаправлением, вы можете использовать

RewriteEngine on 

RewriteCond %{HTTP_HOST} !^www [OR] 
RewriteCond %{HTTPS} off 
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ 
RewriteRule^https://www.%1%{REQUEST_URI} [NE,L,R] 
+0

Пробовал это, все еще приводит к цепочке с двумя переадресациями. –

+0

Попробуйте очистить кеш браузера. – starkeen

+0

Спасибо, но он по-прежнему дает цепочку перенаправления двух - один для https и один для www. –