如何在 codeigniter 中强制使用 ssl?

新手上路,请多包涵

我正在使用 codeigniter 3。如何强制 SSL 连接到我的网页,以便所有页面都加载旁边有绿色挂锁图标?

注意:如何在不编辑 htaccess 文件的情况下执行此操作?

原文由 user7665578 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 501
2 个回答

从位置打开配置文件 application/config/config.php 并像这样启用或设置挂钩:

 $config['enable_hooks'] = TRUE;

然后在 config 文件夹(即application/config/hooks.php)中创建一个名为 hooks.php 的新文件(即application/config/hooks.php)并在其中添加以下代码:

 $hook['post_controller_constructor'][] = array(
    'function' => 'redirect_ssl',
    'filename' => 'ssl.php',
    'filepath' => 'hooks'
);

Now create a new directory named hooks inside the application folder (ie application/hooks) and then create a new file named ssl.php inside the hooks 文件夹(即 application/hooks/ssl.php)。

ssl.php 文件中添加如下代码:

 function redirect_ssl() {
    $CI =& get_instance();
    $class = $CI->router->fetch_class();
    $exclude =  array('client');  // add more controller name to exclude ssl.
    if(!in_array($class,$exclude)) {
        // redirecting to ssl.
        $CI->config->config['base_url'] = str_replace('http://', 'https://', $CI->config->config['base_url']);
        if ($_SERVER['SERVER_PORT'] != 443) redirect($CI->uri->uri_string());
    } else {
        // redirecting with no ssl.
        $CI->config->config['base_url'] = str_replace('https://', 'http://', $CI->config->config['base_url']);
        if ($_SERVER['SERVER_PORT'] == 443) redirect($CI->uri->uri_string());
    }
}

原文由 Rabin Lama Dong 发布,翻译遵循 CC BY-SA 3.0 许可协议

  1. 在您的配置中更改 base_url
    $config['base_url'] = 'https://www.my-site.com/';

  1. 为您的安全连接提供证书
  2. 将传入流量从 http 重定向到 https
    RewriteCond %{HTTPS} off
   RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

原文由 fustaki 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏