最近在我们的服务器/域上安装了一个SSL证书,我现在意识到CI不喜欢https://
。http://
似乎在https://
中得到了404,所以我有一些视图/控制器不需要整个https://
位。例如,当用户没有登录到我正在建立的服务时,可以查看的页面。我唯一想到的是在config.php中配置base_url,这对我来说也不太好,因为我们有多个环境,服务在到达公共可视区域之前会运行。
我的意思是,我们有一个开发区域,我们的每个开发人员都有一个单独的子域,有当前的开发堆栈,处理他们正在处理的内容。然后我们还有一个暂存和QA区域,以及一个测试区,所有这些都在它进入生产之前。
因此,我正在寻找如何处理这一切的想法,除了base_url配置,我不知道从哪里开始让它成为一个易于管理的解决方案。
我的CodeIgniter站点使用DEV、QA和生产环境,所有这些都可以很好地使用HTTPS。HTTPS不需要特殊设置即可使用。也许您可以提供遇到问题的URL?
以下是我如何管理多个子域名。
在"/application/config/config.php"中,将base_url设置为空自动检测:
$config['base_url'] = '';
我假设你的网址是:
- http://dev.yourdomain.com
- http://qa.yourdomain.com
- http://youdomain.com
要管理不同的环境,请在根目录中打开index.php并添加:
// This sets the environment based on the subdomain
$domain = explode('.', $_SERVER['HTTP_HOST']);
switch($domain[0])
{
case 'dev':
$env = 'dev';
break;
case 'qa':
$env = 'qa';
break;
default:
$env = 'production';
break;
}
define('ENVIRONMENT', $env);
// Error reporting
if (defined('ENVIRONMENT'))
{
switch (ENVIRONMENT)
{
case 'dev':
error_reporting(E_ALL);
ini_set("display_errors", 1);
break;
case 'qa':
case 'production':
error_reporting(0);
break;
case 'production':
error_reporting(0);
break;
default:
exit('The application environment is not set correctly.');
}
}
如果您有数据库,请将"/application/config/database.php"设置为:
// Use the respective DB based on the domain name
switch(ENVIRONMENT){
case 'dev':
$active_group = 'dev';
break;
case 'qa':
$active_group = 'qa';
break;
default:
$active_group = 'production';
break;
}
// setup domain specific DB's
$db['dev']['hostname'] = 'mysql.stabletransit.com';
// etc..
$db['qa']['hostname'] = 'mysql.stabletransit.com';
// etc..
$db['production']['hostname'] = 'mysql.stabletransit.com';
// etc..