Yii中的URL管理问题

时间:2014-10-28 11:05:28

标签: php yii url-rewriting

您好我在yii的URl管理方面遇到了麻烦。

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

www.example.com/abc.html而不是www.example.com/vendor/info/v-name/abc.html www.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',

但这似乎不起作用。由于第一条规则也适用于产品案例,最后抛出异常。该怎么办?

非常感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

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

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

您的操作中将提供

名称属性:

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

答案 1 :(得分:1)

目前,您的两个链接均为check if url contains word。因此http://example.com/example如果是产品或供应商,则不会提供任何信息。由于您的供应商规则高于产品,因此每个网址都匹配第一个规则而不是进一步执行。您需要添加任何“标记”以了解它是供应商还是产品。

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

但是,您的网址会发生变化。您仍然可以将网址更改为<v-name:\w+>\/v,网址将显示为http://www.example.com/some name of your vendor here/v