Zend Framework - 如何将url重写为seo友好的url

时间:2012-03-21 01:54:40

标签: apache zend-framework url-rewriting

我在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

最后一个问题:我通常在哪里创建重写?它取决于服务器/技术?

1 个答案:

答案 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