Yii中的URL管理问题


URL management issues in Yii

嗨,我在yii的URl管理方面遇到了麻烦。

我有一个模型供应商和另一个模型产品。两个控制器中都有一个动作信息。现在我想将我的URL创建为

www.example.com/abc.html而非www.example.com/vendor/info/v-name/abc.htmlwww.example.com/xyz.html而非www.example.com/product/info/p-name/xyz.html

v-name和p-name是参数。

我已经把重写规则写成

'<v-name:'w+>'=>'vendor/info',
'<p-name:'w+>'=>'product/info',

但这似乎并不奏效。由于第一条规则也应用于产品案例,最终抛出异常。该怎么办?

非常感谢你的帮助。

我建议您使用更通用的规则:

'<controller:'w+>/<action:'w+>/name/<name:'w+>' => '<controller>/<action>'

名称属性将在您的操作中可用:

public function actionInfo() { $name = Yii::app()->request->getParam( 'name', 'defaultValue' ); }

当前您的两个链接都表示check if url contains word。因此http://example.com/example将不知道它是产品还是供应商。由于您的供应商规则位于产品之上,所以每个url都与第一个规则匹配,不会进一步执行。你需要添加任何"标记"来知道它是供应商还是产品。

'vendor'/<v-name:'w+>' => 'vendor/info',
'product'/<p-name:'w+>' => 'product/info',

但是是的,你的网址会改变。您仍然可以将url更改为类似<v-name:'w+>'/v的内容,并且url将看起来像http://www.example.com/some name of your vendor here/v