如何使用SSL使用CodeIgniter加载特定页面?

amm*_*nkc 20 php apache ssl https codeigniter

如何使用SSL使用CodeIgniter加载特定页面?我有一个apache2/mode_ssl服务器.mod_ssl使用与非安全页面不同的文档根.例如,https(端口443)将提供页面/var/www/ssl_html/和http(端口80)服务页面/var/www/html/.如何让CodeIgniter在这个设置中发挥出色?

ran*_*omx 17

解决这个问题的方法很少.

选项1:

我可能会将代码部署到两个文件夹,然后在文件中:/system/application/config/config.php,将您的页面设置为:

$config['base_url'] = "http://www.yoursite.com/"; 
Run Code Online (Sandbox Code Playgroud)

要么

$config['base_url'] = "https://www.yoursite.com/";
Run Code Online (Sandbox Code Playgroud)

然后在您的非ssl VirtualHost文件夹中,将您的配置设置为按文件夹将受保护的页面重定向到SSL站点:

RedirectPermanent /sslfolder https://www.yoursite.com/sslfolder
Run Code Online (Sandbox Code Playgroud)

选项2:

将所有内容发送到SSL并将所有代码保存在一个文件夹中

/system/application/config/config.php,将您的页面设置为:

$config['base_url'] = "https://www.yoursite.com/";
Run Code Online (Sandbox Code Playgroud)

其他选择

使用header()重定向等等,有一些更多的hacky方法可以做到这一点,但我不认为你想为这个选项维护不同的代码库.我不推荐这个,但你可以这样做:

$config['base_url'] = “http://” . $_SERVER['http_host'] . “/”;
Run Code Online (Sandbox Code Playgroud)


sky*_*ler 11

在application/config/config.php中,将base_url设置为:

$config['base_url'] = ($_SERVER['SERVER_PORT'] == 443 ? 'https' : 'http') . "://{$_SERVER['HTTP_HOST']}/";

这将允许它在任何域上工作,这在本地测试时很方便.


Cod*_*ank 6

我将以下行放在./application/config/config.php文件中,它完美地运行:

$protocol = ( isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on' ) ? 'https' : 'http';
$config['base_url'] = $protocol.'://www.yoursite.com';
Run Code Online (Sandbox Code Playgroud)