用户登录后,将所有网页重定向到HTTPS?

时间:2012-01-14 13:16:10

标签: php javascript http .htaccess https

我正在使用PHP构建一个混合的https / http网站。当用户登录(通过https)时,我使用用户名和会话设置了一个安全cookie。登录后(所以一旦设置了cookie)我想将所有流量重定向到https,因为登录后每个页面上都有用户特定的内容。最初我将网站设置为仅使用https,但在搜索之后看来最好只在需要时使用SSL(所以当用户没有登录时会使用http)。我可以使用PHP / javascript或通过向我的.htaccess文件添加一些关于cookie的命令来实现这一点吗?提前谢谢!

3 个答案:

答案 0 :(得分:3)

这假设您已将会话配置为仅通过HTTPS工作,否则,这只是假装 - 安全性(使用session.cookie_secure)。

您还可以在登录时设置(http,而非https)Cookie:

setcookie('wantshttps','true',0,'/');

.htaccess

RewriteCond %{HTTP_COOKIE} wantshttps=true
RewriteCOnd %{HTTPS} !on
RewriteCOnd %{REQUEST_METHOD} !POST
RewriteRule (.*) https://%{HTTP_HOST}/$1 [L,QSA]

因此,如果您检测到cookie为“true”,但是未登录的用户(会话已过期等),请记住将其设置为false或取消设置。

答案 1 :(得分:1)

就HTML中的URL而言,相对URL应该处理这个问题,因为它们使用基址的协议。如果需要引用其他站点,则可以使用带有协议名称和冒号的URL,例如//www.example.com/foo将根据引用页面的协议解释为http://www.example.com/foohttps://www.example.com/foo

答案 2 :(得分:0)

查看php.net header()函数