3

我一直在开发基于 Yii 框架的 Web 应用程序。

我在尝试制作 sef 网址时遇到了麻烦。

我有的:

  1. 配置已设置。

    'urlManager'=>array('urlFormat'=>'path', 'showScriptName'=>false, 'rules'=>array( // rules go here ) )

  2. 这是用于测试的代码:

echo $this->createUrl('site/test', array('help'=>'me')

$this- 是控制器。

如果我在配置中的“规则”数组为空,我会得到这个/site/test/help/me。我预料到了这一点。

如果

'rules'=>array(
    '<controller:\w+>/<action:\w+>' => '<controller>/<action>',
)

我得到了/site/test?help=me这也是预期的。

但如果

'rules'=>array(
    '<controller:\w+>/<action:\w+>' => '<controller>/<action>',
    '<controller:\w+>/<action:\w+>/<help:\w+>' => '<controller>/<action>/<help>',
)

我还在/site/test?help=me。我期待看到/site/test/me

有人可以帮我吗?

提前致谢。

4

1 回答 1

6

更改规则的顺序并删除<help>. 它将自动添加到操作中。所以你的规则应该是这样的:

'<controller:\w+>/<action:\w+>/<help:\w+>' => '<controller>/<action>',
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',

规则的顺序很重要。你需要把最详细的放在第一位。

问候

于 2012-05-21T11:22:42.080 回答