Yii:route的URL模式不是有效的正则表达式

时间:2013-08-08 10:25:07

标签: php regex yii

我有一个非常奇怪的问题。我有一些简单的路由配置在我的本地服务器(PHP 5.3和5.4,都工作正常),但在部署服务器(PHP 5.3.23),他们失败了,所以我甚至切换到Yii预配置的默认路由(即使我很确定我的是正确的),但它们也失败了以下异常The URL pattern "<controller:\w+>/<id:\d+>" for route "<controller>/view" is not a valid regular expression.

以下是路线:

'urlManager'=>array(
    'urlFormat'=>'path',
    'rules'=>array(
        //'^$' => 'site/index',
        //'<view:[\w\-\_\d]+>' => 'site/paged',
        '<controller:\w+>/<id:\d+>'=>'<controller>/view',
        '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
        '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
    ),
    'showScriptName' => true,
),

你可以看到我已经注释了我的两条路线,以确保我没有犯下一些愚蠢的错误。

有什么问题?


如果有人感兴趣http://i.imgur.com/z0HtioQ.png

,这就是回溯

2 个答案:

答案 0 :(得分:1)

好吧,似乎yii在<controller>/view部分抱怨。对于网址规则,您可以使用带有_前缀的特殊占位符,分别用于模块,控制器和操作 - _m_c_a。在你的情况下,你可以使用类似的东西:

'urlManager'=>array(
    'urlFormat'=>'path',
    'rules'=>array(
        //'^$' => 'site/index',
        //'<view:[\w\-\_\d]+>' => 'site/paged',
        '<_c>/<id:\d+>'=>'<_c>/view',
        '<_c>/<_a>/<id:\d+>'=>'<_c>/<_a>',
        '<_c>/<_a>'=>'<_c>/<_a>',
    ),
    'showScriptName' => true,
),

答案 1 :(得分:1)

经过短暂的调查,这就是我发现的。

preg_match() Compilation failed: unknown option bit(s) set at offset 0

似乎问题是我的配置文件是UTF-8。解决方案是更新PHP&amp; PCRE。