1

所以我想强制用户访问我页面的 https 版本而不是 http。根据这篇文章,我所要做的就是:

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

但是的站点位于主目录中的一个文件夹中,所以它位于www.domain.com/Folder. 那么这个htaccess代码应该放在主目录还是子目录中。因为我不想改变访问主站点的方式,只有文件夹。

4

4 回答 4

2

这是一种不太好的解决方法,尤其是在您可以访问 httpd.conf 的情况下。更好的方法是创建两个虚拟主机。一个用于标准端口 80 的东西,它只是无条件地重定向到 SSL 版本,例如在伪 .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 因任何原因而死,则提供虚假/不存在的内容。

于 2012-10-28T16:29:44.620 回答
1

您可以将其保留在根目录中,但将其更改为:

RewriteRule ^(your-directory/.*)$ https://www.yourdomain.com/$1 [R,L]

但请记住,在重定向发生之前,带有可能敏感数据的 cookie 和查询参数已经以明文形式发送,因此如果您使用 cookie ,请记住使用安全 cookie 属性。

于 2012-10-28T16:32:28.553 回答
0

如果您从 http 重定向到 https,您的网站可能容易受到攻击。看看这个以获得更多信息。

http://www.thoughtcrime.org/software/sslstrip/

于 2013-05-30T02:28:58.913 回答
0

“强制 ssl”似乎很愚蠢,直到他们以“站点验证”的名义修复它在浏览器中打开的巨大安全漏洞,这没有真正的基础,并且有可能被流氓 CA、流氓状态或腐败滥用。(而且“验证”无论如何都是没有用的,不是基于用户的意愿,也不是任何人真正在查看这些网站——那里有很多带有“有效”证书的网络钓鱼网站!)

关于 SSL 的错误信息太多了

您使用自签名证书获得相同的加密,但浏览器告诉用户您的网站是“不受信任的”(当然没有依据 - “未检查”或“不可验证”将是任何警告实际上应该说的 - 警告需要提供信息不是让用户感到害怕的东西,他们中的大多数人甚至在没有阅读其余警告的情况下关闭它们!)

在浏览器中解决此问题之前,我完全不建议在网站上下文中使用 SSL。

同时,我可以建议忘记端口 443 并实现自己的加密层(如果不需要浏览器,也可以使用 ssh 之类的东西)

于 2013-10-25T04:01:30.637 回答