我拥有相信精心制作的.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似乎没有被剥离。
答案 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服务器和浏览器之间的证书协商就会发生。