我一直在开发基于Yii框架的Web应用程序。
我在尝试制作sef网址时遇到了麻烦。
我有什么:
配置已设置。
'urlManager'=>阵列( '网址格式'=> '路径', 'showScriptName'=>假, '规则'=>阵列( //规则就在这里 ) )
这是用于测试的代码:
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
有人可以帮助我吗?
提前致谢。
答案 0 :(得分:5)
更改规则的顺序并删除<help>
。它将自动添加到操作中。所以你的规则应该是这样的:
'<controller:\w+>/<action:\w+>/<help:\w+>' => '<controller>/<action>',
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
规则顺序很重要。你需要先把最详细的一个放在第一位。
此致