是否有一种方法可以在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个)