对于我当前(高级)基于 yii2 的项目,我只需要一个 Controller (SiteController)。所以没有必要在url中显示它。这就是为什么我将此规则添加到前端配置的原因:
'urlManager' => [
'rules' => array(
'<alias:product|contact|about>' => 'site/<alias>',
),
这工作正常,localhost/product 指向 localhost/site/product。
当然,我激活了 prettyUrl 并将此默认规则添加到通用配置中:
'rules' => array(
'<controller:\w+>/<id:\w+>' => '<controller>',
'<controller:\w+>/<action:\w+>/<id:\w+>' => '<controller>/<action>',
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
),
现在我想访问这样的 GET 参数:localhost/product/productname。但是我得到了错误:
Unable to resolve the request "product"
但是 localhost/site/product/productname 工作正常... “产品名称”应该是 $_GET['id']。我必须改变什么才能实现这一目标?
谢谢!
最佳答案
您的规则应该在默认规则之前,并且您需要 2 条规则,例如:
'rules' => array(
'<alias:contact|about>' => 'site/<alias>',
'<alias:product>/<id:\w+>' => 'site/<alias>',
'<controller:\w+>/<id:\w+>' => '<controller>',
'<controller:\w+>/<action:\w+>/<id:\w+>' => '<controller>/<action>',
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
),
关于php - 如何使用别名和 $_GET 参数配置 yii2 urlManager 规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27316780/