有没有办法在ZF2中编写路由脚本,以便单独的参数转义不会导致错误消息?例如,在“影集”模块中,路由设置如下:
// …
'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' => 'Album\Controller\Album',
'action' => 'index',
// …
在这种情况下,网址mydomain/album
将路由到索引视图,网址mydomain/album/index
也将路由到索引视图;但是网址mydomain/album/
会导致错误消息。为了预测用户可能会做出的一些“拼写错误”并相应地对待它们,有没有办法编写路由脚本以便mydomain/album/
也能正常工作?此外,有没有办法将所有不匹配的不完美网址路由到提供进一步说明的页面?
答案 0 :(得分:2)
例如,在“影集”模块中,路由设置如下
的设置与早期版本的手册中的设置类似。它现在就像这样设置,它完全符合你的需要。
'route' => '/album[/][:action][/:id]',
正如您可以看到/album
之后的尾部斜杠本身被定义为可选参数[/]
,因此它与/album
和/album/
匹配
顺便说一句,如果你关心搜索引擎优化,那么你应该关注Google's recommendations on duplicate content,如果你选择这个,因为你现在有2个不同的网址匹配相同的内容(如果包含可选的{{1行动。)