我创建了一个名为catalog的模块,目前在默认控制器中有两个动作:
在索引视图中我有一些链接来运行line-product的动作,url是以下结果:
Url::to(['line-products', 'line' => $line->name])
我的目标是获得像
这样的链接目录/ {线路名}
其中line-name是我发送给行动LineProducts的参数。 我的urlManager配置是:
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
'<moduls:catalogue>/<controller:default>/<action:line-products>/<line:*>' => '<module>/<line>',
'<controller:\w+>/<id:\d+>' => '<controller>/view/',
'<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
],
.htaccess配置:
RewriteEngine on
# If a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Otherwise forward it to index.php
RewriteRule . index.php
任何人都可以解释为什么我的网址总是如此:
http://my-site.dev/catalogue/default/line-products?line= {线名称}
答案 0 :(得分:0)
您交换了配置。关键是从浏览器传递的url模式。值是路线。由于您使用的是特定模块,控制器和操作,因此您可以直接传递这些模块:
'rules' => [
'catalogue/<line>' => 'catalogue/default/line-products'
...
]
您可以阅读Yii2指南中的Routing and Url Creation page以获取更多信息。