是否可以在Zend Framework中创建一个可以使用通配符或正则表达式匹配主机名的路由器(无论主机名中有多少部分)?
我可以根据主机名
创建匹配的路由 $externalHostname = new Zend_Controller_Router_Route_Hostname(
'ext.mysite.com', array(
'module'=> 'external',
));
但是,如果我想实现这样的目标呢?
$externalHostname = new Zend_Controller_Router_Route_Hostname(
'ext.*', array(
'module'=> 'external',
));
其中任何以“ext。”开头的主机名被路由到“外部”模块,与主机名的子域级别无关,所以
都会匹配。
如何实现?
答案 0 :(得分:0)
您无法通过Zend_Controller_Router_Route_Hostname实现此目的。 如果你打算只匹配有限数量的子域级别(比方说2-4),它可能有效。在这种情况下,您将为每个案例添加几个主机名路由。
但无限 - 我不这么认为。
答案 1 :(得分:0)
Zend Router做什么?
答案:它基本上设置并告诉前端控制器当前模块/控制器/动作是什么。然后Front控制器告诉Zend Dispatcher转到moduleFolder / controllerFolder并执行actionMethod。
现在您可以检查上述情况并手动设置路由器。
现在问题是你应该检查并设置这个路由器?
其中一个解决方案是: - 在public / index.php文件中,您可以像插件$ frontController-> registerPlugin(“my_router”)一样注册它,my_router应该扩展“Zend_Controller_Plugin_Abstract”。在这个my_router类构造函数中,您可以设置自己的路由器。
我想说,只需检查Zend Framework的基本流程(在发出请求时,zend框架内部会发生什么?)