通过HTaccess强制SSL

时间:2012-04-10 14:26:50

标签: php .htaccess ssl

以下是我对SSL的一些问题。

RewriteEngine On
RewriteCond %{SERVER_PORT} 80 
RewriteCond %{REQUEST_URI} somefolder 
RewriteRule ^(.*)$ https://www.domain.com/somefolder/$1 [R,L]
  1. 上面是强制所有内容通过HTAccess转到SSL的代码。有没有办法可以将此代码限制为特定的IP地址。我想强制SSL只用于我的IP地址,以便我可以使用新的SSL链接彻底测试网站,并查看(确保) 在将它带到现场之前,一切正常。使用我的IP进行测试会更容易。

  2. SSL是否会干扰任何获取/发布?意思是...如果我使用上面的代码,并且有人在页面上...并且他们提交表单,它将强制他们进入SSL,是否会被视为重定向 并清除任何post / get变量?我只是想提前找出它是否会弄乱我运行的任何东西。

  3. 您是否有任何情况下您强制使用SSL,然后网站上的许多问题都无法正常工作?

2 个答案:

答案 0 :(得分:2)

如果您想确保您的网站能够很好地使用HTTPS,请关闭普通HTTP(假设它适用于整个服务器),或使用构成网页的Apache Httpd指令(在.htaccess或主配置中)需要通过HTTPS提供的服务在通过纯HTTP访问时返回错误(例如404)。 您可以使用Deny from xxxxxxx为特定IP地址实现此目的。

不要依赖mod_rewrite或类似的方法将纯HTTP请求重定向到其HTTPS等效项。这最多可以隐藏问题并导致错误的安全感。

这样做的原因是,即使使用重定向,初始请求也会在重定向之前清除:确保所有引用在使用之前都使用https:// URI。您可以在this answer中找到更多详细信息。

答案 1 :(得分:1)

导航至:http://httpd.apache.org/docs/2.0/ssl/ssl_faq.html#relative

  

如何在相对超链接中切换HTTP和HTTPS?