2016-01-22 3 views
2

Я пытаюсь перенаправить свой сайт с http на https и с www на non-www одновременно. Этот код от Andron here работает, но с несколькими глюками. Я немного изменил его и перенаправил все с не-https на https.http to https redirect with www to non-www in htaccess

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

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

Для следующих ситуаций редирект работает безупречно и перенаправляет версии non-www https:

domain.com 
www.domain.com 
www.domain.com/page 

Однако, когда я вхожу в domain.com/page или http://domain.com/page я вижу только версию non-secure http non-www.

Как я могу убедиться, что все URL-адреса перенаправлены на версию secure https non-www сайта?

ответ

3

Вот правило, которое делает как http->https и www удаление в одном правиле:

RewriteEngine On 

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

Несколько переадресаций следует лучше избегать для SEO целей.

+1

Спасибо! Это помогло! :) – hpb

+0

@anubhava У вас есть аналогичное решение, но с 'Redirect' ?? Я попытался, но я не могу перенаправить как www, так и не-www одновременно –

+0

Не используйте 'Redirect', иначе вы получите цикл перенаправления. Лучше использовать 'mod_rewrite', как предлагается здесь. – anubhava

0

Вы можете использовать:

RewriteCond %{HTTP_HOST} ^www\.(.+) [NC] 
RewriteRule^https://%1%{REQUEST_URI} [NE,L,R=301] 
RewriteCond %{HTTPS} off 
RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} [NE,L,R=301] 
+0

Спасибо. Это тоже работало :) – hpb