2008-1-5 15:50
dcboy
多站点公用zf的问题
最近发现了一个问题
就是怎样能多个站点 用一个zf
我的目录规划是这样的
\
app\
models\
--这个目录放一些数据库操作表的类
modules\
[url]www.a.com[/url]\
default\
controllers\
IndexController.php
[url]www.b.com[/url]\
default\
controllers\
IndexController.php
library\
Zend\
www\
[url]www.a.com[/url]\
[url]www.b.com[/url]\
在服务器上的apache分别设置了虚拟主机
分别设置了目录和域名
[url]www.a.com[/url] 指向 \www\[url]www.a.com[/url]\
[url]www.b.com[/url] 指向 \www\[url]www.b.com[/url]\
a.com下面的index.php设置如下
[php]
<?php
error_reporting(E_ALL|E_STRICT);
date_default_timezone_set('Asia/Shanghai');
//目录分隔符号
$ds = DIRECTORY_SEPARATOR;
//路径分隔符号
$ps = PATH_SEPARATOR;
$ABS_ROOT_PATH = realpath(dirname(__FILE__));
$REL_ROOT_PATH = substr($_SERVER['PHP_SELF'], 0 , strpos($_SERVER['PHP_SELF'],'/index.php'));
set_include_path('.'.PATH_SEPARATOR.'../../library'
.PATH_SEPARATOR.'../../app/models/'
.PATH_SEPARATOR.get_include_path());
require('Zend/Loader.php');
//自动加载类
function __autoload($class){
Zend_Loader::autoload($class);
}
//数据库配置
$dbParams = new Zend_Config_Ini('../../config/database.ini','SysDB');
$db = Zend_Db::factory($dbParams->adapter,$dbParams->toArray());
//$db->query("set names {$dbParams->charset};");
Zend_Db_Table::setDefaultAdapter($db);
Zend_Registry::set('db',$db);
//SMARTY配置
$smartyParams = new Zend_Config_Ini('../../config/smarty.ini', 'Smarty');
$smarty = new Custom_View_Smarty($smartyParams->toArray());
Zend_Registry::set('smarty',$smarty);
//全局定义
$sysinfoParams = new Zend_Config_Ini('../../config/global.ini','SysInfo');
Zend_Registry::set('sysinfo',$sysinfoParams->toArray());
//初始控制器
$frontController = Zend_Controller_Front::getInstance();
$frontController->throwExceptions(true);
$frontController->setControllerDirectory(array(
'default' => '../../app/modules/www.a.com/default/controllers'
));
$frontController->addModuleDirectory('../../app/modules');
$frontController->setParam('noViewRenderer',true);
$frontController->setBaseUrl($REL_ROOT_PATH);
try{
$frontController->dispatch();
}catch(Zend_Controller_Dispatcher_Exception $e){
$frontController->getResponse()->setHttpResponseCode(404);
$frontController->getResponse()->__toString();
}
unset($db);
unset($smarty);
?>
[/php]
b.com的index.php如下
[php]
error_reporting(E_ALL|E_STRICT);
date_default_timezone_set('Asia/Shanghai');
//目录分隔符号
$ds = DIRECTORY_SEPARATOR;
//路径分隔符号
$ps = PATH_SEPARATOR;
$ABS_ROOT_PATH = realpath(dirname(__FILE__));
$REL_ROOT_PATH = substr($_SERVER['PHP_SELF'], 0 , strpos($_SERVER['PHP_SELF'],'/index.php'));
set_include_path('.'.PATH_SEPARATOR.'../../library'
.PATH_SEPARATOR.'../../app/models/'
.PATH_SEPARATOR.get_include_path());
require('Zend/Loader.php');
//自动加载类
function __autoload($class){
Zend_Loader::autoload($class);
}
//数据库配置
$dbParams = new Zend_Config_Ini('../../config/database.ini','SysDB');
$db = Zend_Db::factory($dbParams->adapter,$dbParams->toArray());
//$db->query("set names {$dbParams->charset};");
Zend_Db_Table::setDefaultAdapter($db);
Zend_Registry::set('db',$db);
//SMARTY配置
$smartyParams = new Zend_Config_Ini('../../config/smarty.ini', 'Smarty');
$smarty = new Custom_View_Smarty($smartyParams->toArray());
Zend_Registry::set('smarty',$smarty);
//全局定义
$sysinfoParams = new Zend_Config_Ini('../../config/global.ini','SysInfo');
Zend_Registry::set('sysinfo',$sysinfoParams->toArray());
//初始控制器
$frontController = Zend_Controller_Front::getInstance();
$frontController->throwExceptions(true);
$frontController->setControllerDirectory(array(
'default' => '../../app/modules/www.b.com/default/controllers'
));
$frontController->addModuleDirectory('../../app/modules');
$frontController->setParam('noViewRenderer',true);
$frontController->setBaseUrl($REL_ROOT_PATH);
try{
$frontController->dispatch();
}catch(Zend_Controller_Dispatcher_Exception $e){
$frontController->getResponse()->setHttpResponseCode(404);
$frontController->getResponse()->__toString();
}
unset($db);
unset($smarty);
[/php]
问题是无论访问a.com还是b.com他们的indexAction都是同一个,我想不同的域名指向不同的控制器,请问怎么解决啊谢谢
我的QQ 242772
msn:dcboy@live.com