我有一个非常奇怪的问题。我有一些简单的路由配置在我的本地服务器(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,
),
你可以看到我已经注释了我的两条路线,以确保我没有犯下一些愚蠢的错误。
有什么问题?
答案 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。