1
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.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));

ただし、両方のドメイン名が同時に機能しているわけではありません。

4

1 に答える 1

0

$hostRoute1$hostRoute3$router同じ名前で追加しています: admin。したがって、2 番目の代入は最初の代入をオーバーライドします。

キーを一意にします-たとえば、最後のキーをに変更しadminnewます-そして、あなたは良いはずです。

于 2013-03-11T06:37:16.157 に答える