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