所以我想强制用户访问我的页面的https版本而不是http。根据{{3}}帖子,我所要做的就是:
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.yourdomain.com/$1 [R,L]
但 MY 网站位于主目录中的文件夹中,因此位于www.domain.com/Folder
。所以这个htaccess代码应该放在主目录或子目录中。因为我不想改变访问主站点的方式,只有文件夹。
答案 0 :(得分:2)
这是一个不太好的方法,特别是如果你有权访问httpd.conf。更好的方法是创建 TWO 虚拟主机。一个用于标准端口80的东西,它只是无条件地重定向到SSL版本,例如在伪ish .conf谈话:
<VirtualHost example.com:80>
RedirectPermanent / https://example.com
DocumentRoot /some/fake/path
</VirtualHost>
<VirtualHost example.com:443>
normal site stuff here...
</VirtualHost>
这样做的好处是,即使配置消息禁用.htaccess文件,也可以保留重定向的可行性,如果SSL因任何原因死亡,还可以提供伪造/不存在的内容。
答案 1 :(得分:1)
您可以将其保留在根目录中,但将其更改为:
RewriteRule ^(your-directory/.*)$ https://www.yourdomain.com/$1 [R,L]
请记住,在重定向发生之前,可能已经以明文形式发送了包含可能敏感数据的Cookie和查询参数,因此如果您使用Cookie,请记得使用secure cookie atribute。
答案 2 :(得分:0)
如果您从http重定向到https,您的网站可能会受到攻击。看看这个有关它的更多信息。
答案 3 :(得分:0)
有关SSL的错误信息太多了
您使用自签名证书获得相同加密,但浏览器会告诉用户您的网站是“不受信任的”(当然没有基础 - “未检查”或“不可验证”将是什么警告实际上应该说 - 警告需要提供信息,而不是只是吓唬用户的东西,大多数人只是关闭它们,甚至没有阅读其余的警告!)
在浏览器中修复此问题之前,我不建议在网站环境中使用SSL。
同时我可以建议忘记端口443并实现自己的加密层(或者如果它不需要是浏览器则使用类似ssh的东西)