.htaccess force www。和https用于特定域

时间:2016-03-02 14:14:59

标签: .htaccess https

我有一个可以被多个域访问的服务器。 所有这些域必须有www。在前面。

只有1个域应该是HTTPS,而另一个域应该是HTTP,因为我只有域上的SSL证书。

我在.htaccess文件中尝试了以下代码

RewriteEngine On

# First force domain to use www.
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule .* http://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# Then force https
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^amanvida.eu [NC,OR]
RewriteCond %{HTTP_HOST} ^www.amanvida.eu [NC]
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NC]

应该强制https的域名是www.amanvida.eu

然而,它没有按预期完全运作 https://www.amanvida.eu/nl/amanprana-serum-gezicht-shangri-la.html - 当然是作品

http://www.amanvida.eu/nl/amanprana-serum-gezicht-shangri-la.html - 作品

http://amanvida.eu/nl/amanprana-serum-gezicht-shangri-la.html - 作品

https://amanvida.eu/nl/amanprana-serum-gezicht-shangri-la.html - 重定向到主页

因此,4种情况中有3种情况已经正常,但我希望用户已经在https网站上但不在www上。域也可以正确地重定向到页面,而不是主页。

我甚至试图强迫这样的www:

# First force domain to use www.
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule .* http://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

没有成功。

1 个答案:

答案 0 :(得分:4)

要为特定域强制使用https和www,您可以使用:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www\.)?domain.com$
RewriteCond %{HTTPS} off
RewriteRule ^ https://www.domain.com%{REQUEST_URI} [NC,L,R]