htaccess剥离www并强制SSL

时间:2015-06-25 19:48:35

标签: apache .htaccess mod-rewrite

我拥有相信精心制作的.htaccess文件:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L,NE]

RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

这告诉我“将网址从网址中删除并强制使用https”。除了偶然输入https://www.somedomain.com/的人之外,它的工作正常。向这些人发出警告,表明站点证书存在问题。在这种特殊情况下,www似乎没有被剥离。

1 个答案:

答案 0 :(得分:3)

您实际上可以将两个规则合并为一个:

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

然后确保清除浏览器缓存以对此进行测试。

但请记住,在调用mod_rewrite之前,Web服务器和浏览器之间的证书协商就会发生。