使用Regex定制CakePHP路由

时间:2013-08-04 07:15:25

标签: php cakephp cakephp-2.0

我正在使用cakephp 2.3.8,我有这个自定义路线。

Router::connect('/:regione/*', array('controller' => 'ads', 'action' => 'region'), array('regione' => 'WHAT HERE??' )); 

现在,如果我的:regione 以字符串 auth 开头,我必须执行此路线

示例:

example.com/abruzzo   (ok)
example.com/abruzzo/2 (ok)
example.com/abruzzo/3 (ok)
example.com/auth (NO)
example.com/auth/something (NO)

我不知道在这种情况下如何编写这个正则表达式,因为我需要使用 auth 字符串执行路径IF 不匹配/开始

谢谢!

1 个答案:

答案 0 :(得分:1)

我认为使用否定前瞻应该这样做:

(?!auth).*

这应匹配不以auth开头的所有内容,这意味着authenticate甚至不会匹配。

内部编译的路由正则表达式如下所示:

#^(?:/(?P<regione>(?!auth).*))(?:/(?P<_args_>.*))?[/]*$#