2016-03-22 10 views
1

私はwww以外のものをwwwに転送し、httpをhttpsに転送しようとしています。私は他のソリューションを試してみましたが、私は仕事に行くことができる唯一のコードは以下の通りです:リンク先ページのリダイレクトを避ける - 強制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

この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] 
関連する問題