Codeigniter SSL/HTTPS是我的什么选择,多个子域在发挥作用



最近在我们的服务器/域上安装了一个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..

最新更新