我在Zend Framework上获得了一个网站(Zend中的im allob)。例如,我想将一个网址“ somewebsite.com/test/about
”看作“ somewebsite.com/for-fun-link
”。我如何在Zend中实现这一目标?我是Zend和Apache服务器的新手。我在哪里重写Zend?我希望静态网址 somewebsite.com/page/about 重写为 somewebsite.com/about-product
最后一个问题:我通常在哪里创建重写?它取决于服务器/技术?
答案 0 :(得分:2)
在你的引导程序中,你需要配置一些“路由”。所以,如果你的bootstrap结束了这样的事情:
$frontController = Zend_Controller_Front::getInstance();
$frontController->dispatch();
你可以添加一些这样的路线定义:
$frontController = Zend_Controller_Front::getInstance();
$router = $frontController->getRouter();
$router->addRoute( 'mylovelyroute',
new Zend_Controller_Router_Route_Static( 'for-fun-link',
array( 'controller' => 'test', 'action' => 'about' )
)
);
$router->addRoute( 'myotherroute',
new Zend_Controller_Router_Route_Static( 'about-product',
array( 'controller' => 'page', 'action' => 'about' )
)
);
$router->addRoute( 'justonemore',
new Zend_Controller_Router_Route_Static( 'another/longer/path',
array( 'controller' => 'mycontroller',
'action' => 'myaction',
'someparameter' => 'foo'
)
)
);
$frontController->dispatch();
addRoute()
的第一个参数只是一个唯一的名称。 Zend_Controller_Router_Route_Static
获取您要捕获的路径,然后是一系列参数,包括控制器和操作(如果适用,则为模块)。
如果您想增加复杂性,可以从数据库中加载路由,或者开始使用更多动态路由。这里的文档是有用的下一步:http://framework.zend.com/manual/en/zend.controller.router.html#zend.controller.router.routes.standard