2016-03-22 3 views
1

Я пытаюсь переслать не-www на www и переслать http на https. Я пробовал другие решения, только код, который я могу получить, чтобы работать ниже:Избегайте переадресации целевой страницы - force www и https

RewriteEngine on 
RewriteCond %{HTTP:X-Forwarded-Proto} !https 
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L] 
RewriteCond %{HTTP_HOST} ^example.com [NC] 
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301,NC] 

ОБНОВЛЕНО: (Как @Croises указано) - Перенаправление WWW первым затем HTTPS

RewriteEngine on 
### redirect non-www to www 
RewriteCond %{HTTP_HOST} ^example.com [NC] 
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301,NC] 
### redirect non-http to https 
RewriteCond %{HTTP:X-Forwarded-Proto} !https 
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L] 
+0

Google скорость страницы (https://developers.google.com/speed/pagespeed/insights/) говорит мне «Ваша страница имеет 2 переадресовывает. " Есть ли способ объединить www и https в один? – user1040259

ответ

1

Вы можете использовать это одно правило для обеих переадресаций :

RewriteEngine on 

RewriteCond %{HTTP_HOST} !^www\. [NC,OR] 
RewriteCond %{HTTP:X-Forwarded-Proto} !https 
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+) [NC] 
RewriteRule^https://www.%1%{REQUEST_URI} [L,R=301,NE] 

Очистить кэш браузера перед тестированием этого изменения

+0

Не-www не переадресовывает с вышеуказанным? – user1040259

+0

Вы уверены? Точное такое же правило для моего Apache перенаправляет 'http: // www.domain.com' на' https: // www.domain.com' Просто убедитесь, что это очень первое правило, и нет другого противоречивого правила. – anubhava

+0

Что-то не так с ответом? Я думал, что необходимо избегать 2 переадресаций – anubhava

2

Перепишите домен до https:

RewriteEngine on 
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC] 
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301] 
RewriteCond %{HTTP:X-Forwarded-Proto} !https 
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L] 
Смежные вопросы