我正在尝试使用Yii URL管理器来重写URL,如/site/about?tab=value
到site/about/value
或site/value
。我的规则/<tab:\w+>' => 'site/about
不起作用。以下是完整的URL管理器代码:Yii2 URL管理器不解析规则
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' =>
[
'/' => 'site/index',
'/deals' => '/deal/deals',
'/<tab:\w+>' => 'site/about', //my rule
'/about' => 'site/about',
'/<action:[\-\w]+>' => 'site/<action>',
'/<module:\w+>' => '<module>/default/index',
'/<module:\w+>/<controller:\w+>/<id:\d+>' => '/<module>/<controller>/view',
'/<module:\w+>/<controller:\w+>/<id:\d+>/<action:[\-\w]+>/<entity_id:\d+>' => '/<module>/<controller>/<action>',
'/<module:\w+>/<controller:\w+>/<id:\d+>/<action:[\-\w]+>' => '/<module>/<controller>/<action>',
'/<controller:\w+>/<id:\d+>' => '<controller>/view',
'/<controller:\w+>/<id:\d+>/<action:[\-\w]+>/<entity_id:\d+>' => '<controller>/<action>',
'/<controller:\w+>/<id:\d+>/<action:[\-\w]+>' => '<controller>/<action>',
'/<controller:\w+>/<action:[\-\w]+>' => '<controller>/<action>',
'/<module:\w+>/<action:[\-\w]+>' => '<module>/default/<action>',
'/<module:\w+>/<controller:\w+>' => '<module>/<controller>/index',
],
,这里是小部件代码:
echo Nav::widget([
'items' => [
['label' => '1', 'url' => ['/site/about', 'tab' => '']],
['label' => '2', 'url' => ['/site/about', 'tab' => 'value']],
['label' => '3', 'url' => ['site/about', 'tab' => 'tariffs']],
['label' => '4', 'url' => ['site/about', 'tab' => 'team']],
['label' => '5', 'url' => ['site/about', 'tab' => 'documents']],
],
'options' => ['class' =>'nav-pills nav-stacked c-nav'],
]);
不知道我的理解:你要删除的查询字符串(即每当site/about被请求时,来自URL的'?'后的url部分? – tarleb
@tarleb,我想用'/'=>'site/about'将像/'/ about?tab = value'这样的URL转换为'/ site/value'(和其他具有不同标签值的URL)。 –