0

最近在我们的服务器/域上安装了 SSL 证书,我现在意识到 CI 不喜欢https://看起来像任何有效的东西http://都会得到 404,https://但我有一些不需要全部的视图/控制器https://。例如,当用户未登录到我正在构建的服务时的页面是可见的。我想出的唯一一件事是在 config.php 中配置 base_url,这对我来说也不是那么好,因为我们有多个环境,服务在到达公共可视区域之前运行。

我的意思是我们有我们的开发区域,我们的每个开发人员都有一个单独的子域,其中包含当前的开发堆栈,致力于他们正在从事的工作。然后我们有一个暂存区和 QA 区,以及一个测试区,所有这些都将在投入生产之前进行。

所以我正在寻找关于如何处理所有这些的想法,并且缺少 base_url 配置,我不知道从哪里开始使它成为一个易于管理的解决方案。

4

1 回答 1

2

我为我的 CodeIgniter 站点使用了 DEV、QA 和生产环境,它们都可以正常使用 HTTPS。HTTPS 无需特殊设置即可使用它。也许您可以提供您遇到问题的 URL?

下面是我如何管理多个子域。

在“/application/config/config.php”中,将 base_url 设置为自动检测,将其留空:

$config['base_url'] = '';

我假设您的网址是:

要管理不同的环境,请打开根目录下的 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..
于 2012-10-11T19:26:35.910 回答