我在Windows 7上使用CodeIgniter和wamp。我生成了一个自签名证书以及在https下运行网站所需的所有其他内容。我的网站在SSL模式下运行良好。问题是我只希望我的登录和注册页面处于SSL模式。在CI中,我们只能配置一个URL,即:
$config['base_url'] = "https://localhost/abc";
我不想以SSL模式运行我的整个网站。我怎样才能做到这一点?我看了以下链接:
http://stackoverflow.com/questions/1500527/how-to-use-ssl-with-codeigniter
但它并没有解决我的任何问题。我不想复制该人正在谈论的整个网站文件夹。我想为http和https维护相同的会话数据和cookie。我可以在控制器的构造函数中对需要SSL的页面进行硬编码吗?如果收到http
上该安全页面的请求,我应该重定向到https
。这种方法有效还是我需要处理它?如果有任何正确和优雅的解决方案,请告诉我。
我有同样的问题。就我而言,我只能在控制面板中使用SSL。
我通过重写URL帮助程序解决了这个问题:
function base_url($flag = true)
{
$CI = CI_Controller::get_instance();
if (strpos(current_url(), '/cp/') and $flag) {
return str_ireplace('http://', 'https://', $CI->config->slash_item('base_url')).'index.php/';
}
return $CI->config->slash_item('base_url');
}
在这种情况下,'/ cp /'表示“控制面板”。我被迫这样做是因为其他方式(比如将secure_base_url
添加到config.php
或不同的SSL帮助程序)对我来说不起作用。
附加的$flag
参数适用于应在控制面板中加载的图像,CSS和JS文件。在这些情况下使用base_url(false)
,因为https://www.example.com/**index.php**/image.png
是image.png
文件的错误地址)。
你可以为你的网站做同样的事情。
希望这可以帮助。
使用.htaccess文件将是我最好的猜测
RewriteRule ^my-account\/?(.+)?$ https://mydomain.com/my-account/$1 [NC,R,L]
那会对你有用吗?