我们可以在Zend框架中为模块创建虚拟主机1.11
问题描述:
当前我有一个zend 1.xx
项目,其中有三个模块module1
,module2
,module3
。我们可以在Zend框架中为模块创建虚拟主机1.11
我的要求是为每个模块创建单独的虚拟主机。
就像我们输入http://module1
是应该加载module1,然后我们输入http://module2
那么它应该加载项目的module2
。
虚拟主机中的DocumentRoot
值应该在默认值之外的模块中应该是多少。
对于默认模块.../project/public
工作正常,但不适用于其他模块。
答
你绝对不能使用虚拟主机来做到这一点,除非你实际上为每个模块分割你的代码库(意味着只有代码副本只有module1,module2或module3)。
你可以做很容易是禁用default routes(这将删除访问你的应用程序完全相信,我想你还没有定义自己的路线),然后创建一个Route chain那链的route hostname和路由看起来像默认的那个。
所以:
- 禁用默认路由
- 创建一个路由,就像默认一个没有模块
- 创建3条路线的主机名(每个域一个)
- 创建3支链,有一个路由主机名(3.)和默认路由(2)
答
我已经通过在应用程序中使用以下代码集来实现此目的。 ini文件 -
; This piece of code used for rounting usoc host to default module
resources.router.routes.plain.type = "Zend_Controller_Router_Route"
resources.router.routes.plain.abstract = true
resources.router.routes.plain.route = "/:controller/:action"
resources.router.routes.plain.defaults.controller = "index"
resources.router.routes.plain.defaults.action = "index"
上面的代码如果为默认模块。
; This piece of code used for rounting beat host to beat module
resources.router.routes.beat.type = "Zend_Controller_Router_Route_Hostname"
resources.router.routes.beat.route = "beat"
resources.router.routes.beat.defaults.module = "beat"
resources.router.routes.beat.chains.index.type = "Zend_Controller_Router_Route"
resources.router.routes.beat.chains.index.route = ":controller/:action/*"
resources.router.routes.beat.chains.index.defaults.controller = "index"
resources.router.routes.beat.chains.index.defaults.action = "index"
以上如果节拍模块和主机名也代码击败
感谢您的回复。它需要虚拟主机设置? –
不是真的,它取决于您当前的设置基本上...如果您当前的虚拟主机接受不同的域名,则无需更改;如果你当前的设置没有虚拟主机,所有的流量都通过这个应用程序,所以没有额外的设置...真的取决于你的设置,虽然... –
以下是用于我的“节拍”模块,仍然选择默认模块布局 - '$ hostnameAdminRoute = new Zend_Controller_Router_Route_Hostname('beat',array('module'=>'beat')); (''控制器':''索引','行动'=>'索引')。 ))))'可能是什么原因? –