Htaccess将http重定向到https,www重定向到非www不起作用

时间:2018-05-14 14:17:25

标签: .htaccess http web https

我正在处理的网站需要从http重定向到https,我们安装了证书,并且来自www。到非www。由于我不是.htaccess中的明星,我在互联网上查找了正确的代码,我发现了这个:

RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteRule ^ http://website.nl [L,NE,R=301]

RewriteCond %{HTTPS} off
RewriteRule ^ https://website.nl [L,NE,R=301]

也尝试了

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

它应该工作,www。对于非www https工作,第二个语句在我创建错误时给出了一个错误,但是没有给我我想要的结果。我通过一个在线测试仪运行它说这应该没问题。我一直在寻找它的其他版本,我用了看端口,添加了ssl检查,似乎没什么用。我做错了什么?

1 个答案:

答案 0 :(得分:0)

要将流量从HTTP转发到HTTPS使用:

RewriteEngine On 
RewriteCond %{SERVER_PORT} 80
RewriteCond %{HTTP_HOST} ^(www\.)?website\.com
RewriteRule ^(.*)$ https://www.website.com/$1 [R,L]

我们检查请求是否正在访问端口80,然后检查域是否转发。如果域名为x,则我们将其转发至https://x/。域检查还在域前缀下具有条件分组,以包括www.(如果存在),这通过使用?正则表达式来完成。因此,两个域请求都将产生相同的协议。

https://www.regular-expressions.info/conditional.html