我可以使用一个codeigniter框架目录来创建多个应用程序吗?
我有两个带有一个CodeIgniter应用程序的网站,我使用一个数据库用于网站,系统文件夹,配置,视图,控制器等也是相同的。
主网站工作正常,所有链接都正常工作,另一个网站只有主页正常工作,其余链接无效,当我打开另一个链接时发生错误:"无法加载您的默认控制器。请确保Routes.php文件中指定的控制器有效。" codeigniter的版本是2.2.0,请帮忙。
提前致谢
答案 0 :(得分:1)
试试这个:
例如: - subdomain1.hostname.com - subdomain2.hostname.com
然后在我的前面索引:
// Host address
$host = $_SERVER['HTTP_HOST'];
$SERVER_NAME = $_SERVER['SERVER_NAME'];
define('HOST', $SERVER_NAME);
// Extract eventual subdomain
$host3 = strrpos($host, '.');
$host2 = substr($host, 0, $host3);
$host1 = strrpos($host2, '.');
$subdomain = substr($host, 0, $host1);
if($host == 'localhost') {
define('HOST_TYPE', 'localhost');
define('SUBDOMAIN', FALSE);
} else {
if($subdomain !== 'www' && $subdomain !== '') {
define('HOST_TYPE', 'subdomain');
define('SUBDOMAIN', $subdomain);
} else {
define('HOST_TYPE', 'site');
define('SUBDOMAIN', FALSE);
}
}
在我的config.php配置中:
switch (HOST_TYPE) {
case 'subdomain':
$config['base_url'] = 'http://'.SUBDOMAIN.'.hostname.com/';
break;
case 'localhost':
$config['base_url'] = 'http://localhost/devpage/';
break;
default:
//$config['base_url'] = 'http://mainpage.com/';
break;
}
在我的database.php配置中:
...
$db['default']['hostname'] = 'localhost';
switch (HOST_TYPE) {
case 'subdomain':
$username;
$password;
$con=mysqli_connect("localhost","username_db","password_db","name_db");
$query = "SELECT * FROM subdomain_table WHERE subdomain_name = '".SUBDOMAIN."';" or die("Error in the consult.." . mysqli_error($con));
if ($result = mysqli_query($con, $query)) {
while($row = mysqli_fetch_array($result)) {
$username = $row["username"];
$password = $row["password"];
}
}else{
mysqli_close($con);
redirect('http://hostname.com'); //No sudomain found or error page
}
// Check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
mysqli_close($con);
}else{
}
mysqli_close($con);
$db['default']['database'] = 'db_prefix'.SUBDOMAIN;
$db['default']['username'] = 'username_prefix'.$usuario;
$db['default']['password'] = $password;
break;
case 'localhost':
$db['default']['database'] = 'local_dev_db_name';
$db['default']['username'] = 'some_username';
$db['default']['password'] = 'some_password';
break;
default:
redirect('http://mainpage.com');
break;
}
$db['default']['dbdriver'] = 'mysql';
...
最后是constants.php config:
//this one resolve all your links!!!!!
switch (HOST_TYPE) {
case 'subdomain':
define('URL','http://'.SUBDOMAIN.'.hostname.com/');
break;
case 'localhost':
define('URL','http://localhost/devpage/');
break;
default:
define('URL','http://mainpage.com/');
break;
}
我希望你觉得它很有用
答案 1 :(得分:0)
我认为@avenda的答案是有道理的,但正如你所提到的,只有1x数据库,那么就没有必要使用该代码了。
我认为您配置文件中最简单的解决方案就是:
$config['base_url'] = $_SERVER['HTTP_HOST'];
然后在你的路线文件中:
if ($_SERVER['HTTP_HOST'] == 'x'){
$routes['default_controller'] = 'xController';
} elseif ($_SERVER['HTTP_HOST'] == 'y'){
$routes['default_controller'] = 'yController';
}
没有对它进行测试,但是对项目有类似的需求,所以必须实现类似的东西。