我正在尝试更改Yii显示“产品”页面网址的方式。 现在,它显示了这一点:
localhost/~antonio/project/?r=site/product&id=HXW1410D260D0TB013&language=en
或者使用urlFormat = path
localhost/~antonio/project/en/product/id/HXW1410D260D0TB013
我需要网址看起来像这样:
localhost/~antonio/project/en/product/HXW1410D260D0TB013
我查看了Yii文档,但我找不到办法来做到这一点。
感谢。
答案 0 :(得分:2)
将以下规则添加到main.php rules数组中:
'product/<id:[A-Z0-9]+>'=>'site/product',
所以你应该有像
这样的东西'urlManager' => array(
'urlFormat' => 'path',
'showScriptName' => false,
'rules' => array(
'product/<id:[A-Z0-9]+>'=>'site/product',
'<controller:\w+>/<id:\d+>' => '<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
),
),
基本上规则格式如下:
'product/<id:[A-Z0-9]+>'=>'site/product',
&lt;&gt;中的条款意味着你要传递一个变量,所以
<id:[A-Z0-9]+>
表示如果正则表达式匹配(如果它只有大写字母和数字),则传递$ _GET ['id']。
所以上面的规则意味着如果url匹配product / something,然后将其发送到site / product并将“something”作为名为id的$ _GET参数传递。
希望澄清。
答案 1 :(得分:0)
为此,请转到配置文件夹中的main.php
文件并取消注释以下内容以启用路径格式的网址:
'urlManager' => array(
'urlFormat' => 'path',
'rules' => array(
'<controller:\w+>/<id:\d+>' => '<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
),
),