如何在ZF2中避免轻微的路由错误



是否有一种方法可以在ZF2中编写路由脚本,以便单独的参数转义不会导致错误消息?例如,在Album模块中,路由设置如下:

// …
'router' => array(
    'routes' => array(
        'album' => array(
            'type'    => 'segment',
            'options' => array(
                'route'    => '/album[/:action][/:id]',
                'constraints' => array(
                    'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
                    'id'     => '[0-9]+',
                ),
                'defaults' => array(
                    'controller' => 'AlbumControllerAlbum',
                    'action'     => 'index',
// …

在这个场景中,url mydomain/album将路由到索引视图,url mydomain/album/index也将路由到索引视图;但是url mydomain/album/会导致错误消息。在努力预测一些用户可能做出的"拼写错误",并相应地对待他们,是否有一种方法来编写路由脚本,使mydomain/album/工作良好?此外,是否有一种方法可以将所有不完美的url路由到提供进一步说明的页面?

例如,在Album模块中,路由设置如下

在手册的早期版本中是这样设置的。它现在是这样设置的,这正是你需要的。

'route'    => '/album[/][:action][/:id]',

你可以看到/album后面的斜杠本身被定义为可选参数[/],因此它匹配/album/album/

见:http://framework.zend.com/manual/2.3/en/user-guide/routing-and-controllers.html routing-and-controllers

顺便说一句,如果你关心SEO,如果你这样做,值得注意谷歌对重复内容的推荐,因为你现在有两个不同的url匹配相同的内容(如果你包括可选的/index操作,则有3个)

最新更新