2017-02-06 37 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是一种规则是不可能的。我不应该看! –

+0

你确定吗?它在本地和现场服务器上都能正常工作。 –

+0

是的,www。不会被迫,只是https。我已经尝试了很多.htacess镊子没有成功。让我想知道答案是否超越.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。 –

相关问题