我有一个可以被多个域访问的服务器。 所有这些域必须有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]
没有成功。
答案 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]