两个域名的Zend_Controller_Router_Route_Hostname

时间:2013-03-11 03:11:19

标签: zend-framework bootstrapping zend-controller-router

protected function _initHostnameRouter()
{
    $this->bootstrap('autoload');
    $this->bootstrap('FrontController');

    $front = $this->getResource('FrontController');

    $router = $front->getRouter();

    $hostRoute1 = new Zend_Controller_Router_Route_Hostname('admin.example.net',array('module' => 'admin'));
    $hostRoute2 = new Zend_Controller_Router_Route_Hostname('vouchers.example.net',array('module' => 'vouchers'));
    $pathRoute = new Curo_Route_NoModule();

    $router->removeDefaultRoutes();
    $router->addRoute('default',     $pathRoute);
    $router->addRoute('admin',       $hostRoute1->chain($pathRoute));
    $router->addRoute('vouchers',    $hostRoute2->chain($pathRoute));
}

我在Bootstrap文件中使用了上面的代码,它运行良好。我需要为admin模块添加另一个域名。现在我使用admin.example.net作为管理模块。我还需要添加admin.examplenew.net。我不需要更改旧域。两者都应该同时工作。

我试过了,

    $hostRoute1 = new Zend_Controller_Router_Route_Hostname('admin.example.net',array('module' => 'admin'));
    $hostRoute2 = new Zend_Controller_Router_Route_Hostname('vouchers.example.net',array('module' => 'vouchers'));
    $hostRoute3 = new Zend_Controller_Router_Route_Hostname('admin.examplenew.net',array('module' => 'adminnew'));
    $pathRoute = new Curo_Route_NoModule();

    $router->removeDefaultRoutes();
    $router->addRoute('default',     $pathRoute);
    $router->addRoute('admin',       $hostRoute1->chain($pathRoute));
    $router->addRoute('vouchers',    $hostRoute2->chain($pathRoute));
    $router->addRoute('adminnew',    $hostRoute3->chain($pathRoute));

但这两个域名不同时发挥作用。

1 个答案:

答案 0 :(得分:0)

您要将同名$hostRoute1$hostRoute3添加到$routeradmin。所以第二个任务是覆盖第一个。

将密钥设为唯一 - 例如,将最后一个更改为adminnew - 您应该很好。