1

私はこれに対する解決策を見つけるために何時間も費やしましたが、そこにはあまり出ていないようです.

私は現在admin.domain.com、次のように簡単に実行できる管理モジュールを指しています。

$adminRoute = new Zend_Controller_Router_Route_Hostname(
        'admin.domain.com', array(
            'module' => 'admin'
        )
    );
$router
    ->addRoute('admin', $adminRoute->chain(
        new Zend_Controller_Router_Route(
            ':controller/:action/*',
            array(
                'controller' => 'index',
                'action' => 'index'
            ))
    ));

また、他のすべてのルートはデフォルトのルーティングに従って機能するためwww.domain.com/module/controllerwww.domain.com/controller両方とも期待どおりに機能します。

ただし、現在adminモジュール内にいて、ルートを指す URL を組み立てたい場合、どうすればwww.domain.comよいでしょうか?

残念ながら、デフォルト ルートをホスト名ルートにする単純なケースではありwww.domain.comません。これは、パス内の「オプションの」モジュール パラメータの恩恵を受けないためです。例えば

    $wwwRoute = new Zend_Controller_Router_Route_Hostname(
        'www.domain.com', array(
            'module' => 'default'
        )
    );
$router
    ->addRoute('default', $wwwRoute->chain(
        new Zend_Controller_Router_Route(
            ':module/:controller/:action/*',
            array(
                'controller' => 'index',
                'action' => 'index'
            ))
    ));

www.domain.com/default/controller/actionではなく、フォーマット内のすべてのパスを単純に構築します。www.domain.com/controller/action

ドキュメントは、デフォルトのルーティングが使用することを示唆していますZend_Controller_Router_Route_Moduleが、私はそれを試しましたが、それだけではないようです。

何か案は?

編集: サブドメインにすべてのモジュールを配置してから、厳密にそのようにリクエストをルーティングする/controller/action/*か、ルート パスの一部としてモジュールを配置する必要があると思われます。そうしないと、モジュールは 2 つの URL を介して到達可能になります -module.domain.comそしてwww.domain.com/module- 明らかにこれを回避する方法があり、もちろん、デフォルトの Zend ルーティングの「オプション」モジュール機能に依存せずに、各モジュールに特定のルートを設定することもできます。

4

0 に答える 0