私はこれに対する解決策を見つけるために何時間も費やしましたが、そこにはあまり出ていないようです.
私は現在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/controller
、www.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 ルーティングの「オプション」モジュール機能に依存せずに、各モジュールに特定のルートを設定することもできます。