Yii2 友好的 url 不起作用
Yii2 friendly urls doesn't work
我正在使用 Yii2 高级版和 Nginx。我的网址管理员:
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
'test1' => 'page/view?id=1',
'test2' => 'page/view?id=2',
],
],
mydomain.com/page/view?id=1 - 有效
mydomain.com/test1 - 不起作用。 404 错误
它在 Yii1 中有效,但在 Yii2 中无效。怎么了?
谢谢
对规则中的参数使用正则表达式:
'rules' => [
'test/<id:\d+>' => 'page/view',
],
另请阅读有关 路由和 URL 创建 http://www.yiiframework.com/doc-2.0/guide-runtime-routing.html#routing
的 Yii2 文档
在您的 urlManager
配置中,您应该只定义控制器和操作。
因此您的 rules
将是:
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
'test1' => 'page/view',
'test2' => 'page/view',
],
],
您可以 运行 通过 link @baseUrl/test1?id=1
和 @baseUrl/test2?id=2
,或者在您的视图中使用此 urlHelper
:
Html::a('test1', \yii\helpers\Url::to(['test1', 'id' => 1]))
如果你想test1
显示id=1
的页面视图,test2
将显示id=2
,你应该这样配置规则:
'rules' => [
//other rules ...
[
'pattern' => 'test<id:\d+>',
'route' => 'page/view',
],
//other rules ...
],
希望有用。
祝你好运,玩得开心。
您可以在 defaults 属性 中设置默认参数数组。
'rules' => [
[
'pattern' => 'test1',
'route' => 'page/view',
'defaults' => ['id' => 1],
],
],
我正在使用 Yii2 高级版和 Nginx。我的网址管理员:
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
'test1' => 'page/view?id=1',
'test2' => 'page/view?id=2',
],
],
mydomain.com/page/view?id=1 - 有效
mydomain.com/test1 - 不起作用。 404 错误
它在 Yii1 中有效,但在 Yii2 中无效。怎么了? 谢谢
对规则中的参数使用正则表达式:
'rules' => [
'test/<id:\d+>' => 'page/view',
],
另请阅读有关 路由和 URL 创建 http://www.yiiframework.com/doc-2.0/guide-runtime-routing.html#routing
的 Yii2 文档在您的 urlManager
配置中,您应该只定义控制器和操作。
因此您的 rules
将是:
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
'test1' => 'page/view',
'test2' => 'page/view',
],
],
您可以 运行 通过 link @baseUrl/test1?id=1
和 @baseUrl/test2?id=2
,或者在您的视图中使用此 urlHelper
:
Html::a('test1', \yii\helpers\Url::to(['test1', 'id' => 1]))
如果你想test1
显示id=1
的页面视图,test2
将显示id=2
,你应该这样配置规则:
'rules' => [
//other rules ...
[
'pattern' => 'test<id:\d+>',
'route' => 'page/view',
],
//other rules ...
],
希望有用。
祝你好运,玩得开心。
您可以在 defaults 属性 中设置默认参数数组。
'rules' => [
[
'pattern' => 'test1',
'route' => 'page/view',
'defaults' => ['id' => 1],
],
],