如何对网站的某些部分强制使用HTTPS,例如登录页面或注册页面,并在网站的其余部分使用HTTP?
答案 0 :(得分:1)
我最喜欢的转换为https强制方法是将它作为PHP脚本中的第一件事。它适用于Joomla,可能在CakePHP中工作。
if( $_SERVER['SERVER_PORT'] == 80) {
header('Location:https://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']).'/'.basename($_SERVER['PHP_SELF']));
die();
}
此代码段会强制显示您正在查看的任何网页上的https。如果要隔离certian页面,只需根据“$ _SERVER ['PHP_SELF']”变量中的信息添加一些条件。
否则,修改.htaccess文件,假设您的主机允许您访问此文件:
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_URI} somefolder
RewriteRule ^(.*)$ https://www.domain.com/somefolder/$1 [R,L]
答案 1 :(得分:0)
我使用CodeIgniter做了一件事。我对CakePHP并不完全熟悉,但我确信这个过程很相似。
base_url
而不是https://
重置http://
。如果控制器不在数组中,则会强制base_url
到http://
。为我工作完美无缺。如果我的CodeIgniter项目中的代码示例有用,请告诉我。
答案 2 :(得分:0)
您可以加载RequestHandler组件并使用isSsl()函数来确定它是来自http还是https,如果!isSsl然后将其重定向到https页面:)否则做其他任何你想做的事情。
isSsl函数的书信息here
答案 3 :(得分:0)
更好的解决方案可能是使用mod_rewrite和htaccess对某些Url执行此操作,并将代码全部保留在一起。
您可以为某些Url设置重写规则。
以下是关于如何为整个网站执行此操作的主要内容:
http://www.besthostratings.com/articles/force-ssl-htaccess.html