php - Codeigniter SSL/HTTPS 我的选择是什么,多个子域在起作用。

标签 php codeigniter ssl https

最近在我们的服务器/域上安装了一个 SSL 证书,我现在意识到 CI 不喜欢 https:// 似乎任何有效的 http://https:// 中得到 404,所以我有一些 View / Controller 不需要整个 https:// 位。例如,当用户未登录到我正在构建的服务时,页面是可见的。我想到的唯一一件事是在 config.php 中配置 base_url,这对我来说也不太适用,因为我们有多个环境,服务在到达公共(public)可视区域之前会在这些环境中运行。

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

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

最佳答案

我为我的 CodeIgniter 站点使用了开发、质量检查和生产环境,它们都可以很好地使用 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..

关于php - Codeigniter SSL/HTTPS 我的选择是什么,多个子域在起作用。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12809561/

相关文章:

ssl - 初始握手后我可以安全地依赖 WebSocket 连接吗?

php - MySQL有时无效的查询语法

php - 不确定为什么下拉框没有填充数据或选择

php - 优化在 codeigniter 中进行查询的方式

ssl - 如何更新 SSL 密码套件

node.js - express 4 中的 HTTPS

PHP 获取包含文件的文件目录

php - 统计一些有限的单词并显示它们与他们的名字相对应

php - 如何更改文件 mime 类型以绕过 php shell 上传?

php - Codeigniter form_validation 创建自定义规则/过滤器