0

私のプロジェクトのモジュールには独自のドメインが必要なので、そのためのルートを作成しました:

$portalurl = str_replace( 'http://', '', $config->domains->portal );

$hostnameRoute = new Zend_Controller_Router_Route_Hostname(
    $portalurl,
    array( 'module' => 'portal' )
);

$defaultroute = new Zend_Controller_Router_Route(
    ':controller/:action',
    array(
        'controller' => 'index',
        'action' => 'index'
    )
);

$contentroute = new Zend_Controller_Router_Route(
    'page/:page',
    array(
        'controller'=> 'content',
        'action' => 'show'
    )
);

$router->addRoute( 'portalDefault', $hostnameRoute->chain($defaultroute) );
$router->addRoute( 'portalContent', $hostnameRoute->chain($contentroute) );

私のテスト システムでは、アプリケーションは /project/public のようなサブ ディレクトリにあり、システム ホスト リストに入力したドメインを介してモジュールを開くと正常に動作します。domain.lan/project/public. 今、私はシステム (リダイレクト) を介して URL をアセンブルしたいのですが、サブディレクトリなしでそれをアセンブルします。

$this->_redirect(
    $this->view->url(array(
        'action' => 'index',
        'controller' => 'index')
    ),
    array( 'prependBase' => false )
); 

はい、私はそれを解決する最も簡単な方法を知っています.vhostを構成することですが、vhostなしで機能し、ルートでパスを手動で設定できる別の解決策が見つからないことが気になります.

これに最適なアプローチは何ですか?

4

2 に答える 2

0

場合によっては、ZF が を適切に検出できないことがあるためbaseUrl(すべてにおいて優れているわけではありません...)、ブートストラップで手動で設定する必要があります。.ini でこれを実行できるはずですが、うまくいきませんでした。

_initView他の何よりも前に、これを の先頭に置くのが最善であることに注意してください。

protected function _initView()
{
    // Set the Base URL (only needed sometimes)
    $front = Zend_Controller_Front::getInstance();
    $front->setBaseUrl( '/myapp/public' );
    //initialize view
    $view = new Zend_View...

次にbaseUrl()、リンクされたファイルなどをラップするために使用します。$this->baseUrl('css/template.css');

于 2011-09-24T19:00:57.693 に答える
0

frontController 構成 (application.ini 内) で「サブディレクトリ」を指定する必要があります。これは、生成された URL の先頭に自動的に追加されます。

resources.frontController.baseUrl = "/project/public"
于 2011-09-20T17:04:15.430 に答える