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