Yii2 URL 制作 Slug 的路线 Url
Yii2 URL Route for make a Slug Url
我正在学习 yii2,
我在制作 url 路线时遇到问题。
这是我的 url 配置
'urlManager' => [
'class' => 'yii\web\UrlManager',
// Disable index.php
'showScriptName' => false,
// Disable r= routes
// 'enableStrictParsing' => false,
'enablePrettyUrl' => true,
'rules' => array(
'category/<id:\S+>' => 'category/detail',
'<controller:\w+>/<id:\d+>' => '<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
'request-password-reset' => 'site/request-password-reset',
'reset-password/<token:\S+>' => 'site/reset-password',
'profile/<id:[0-9a-zA-Z\-]+>/?' => 'profile/user',
'logout' => 'site/logout',
'login' => 'site/login',
),
],
问题出在配置文件路由中。
情况如下:
- http://localhost/myapps/profile/some-url/ -> 使用添加的斜线
url
结束
- http://localhost/myapps/profile/some-url -> url 末尾没有斜线不起作用,错误 404
- http://localhost/myapps/profile/someurl -> 不工作错误 404.
- http://localhost/myapps/profile/first-second-third -> 最后没有斜线的工作正常
我真的很困惑,我一直在这里寻找以前的问题,但没有尝试处理我的案例。
有人可以帮我解决问题吗?
只需将您的个人资料别名移至列表顶部:
'profile/<id:[0-9a-zA-Z\-]+>/?' => 'profile/user',
'category/<id:\S+>' => 'category/detail',
'<controller:\w+>/<id:\d+>' => '<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
'request-password-reset' => 'site/request-password-reset',
'reset-password/<token:\S+>' => 'site/reset-password',
'logout' => 'site/logout',
'login' => 'site/login',
由于 '<controller:\w+>/<action:\w+>' => '<controller>/<action>'
是在 'profile/<id:[0-9a-zA-Z\-]+>/?' => 'profile/user'
之前定义的,它永远不会到达配置文件,因为它将它识别为 controller/action。
我正在学习 yii2, 我在制作 url 路线时遇到问题。 这是我的 url 配置
'urlManager' => [
'class' => 'yii\web\UrlManager',
// Disable index.php
'showScriptName' => false,
// Disable r= routes
// 'enableStrictParsing' => false,
'enablePrettyUrl' => true,
'rules' => array(
'category/<id:\S+>' => 'category/detail',
'<controller:\w+>/<id:\d+>' => '<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
'request-password-reset' => 'site/request-password-reset',
'reset-password/<token:\S+>' => 'site/reset-password',
'profile/<id:[0-9a-zA-Z\-]+>/?' => 'profile/user',
'logout' => 'site/logout',
'login' => 'site/login',
),
],
问题出在配置文件路由中。 情况如下:
- http://localhost/myapps/profile/some-url/ -> 使用添加的斜线 url 结束
- http://localhost/myapps/profile/some-url -> url 末尾没有斜线不起作用,错误 404
- http://localhost/myapps/profile/someurl -> 不工作错误 404.
- http://localhost/myapps/profile/first-second-third -> 最后没有斜线的工作正常
我真的很困惑,我一直在这里寻找以前的问题,但没有尝试处理我的案例。
有人可以帮我解决问题吗?
只需将您的个人资料别名移至列表顶部:
'profile/<id:[0-9a-zA-Z\-]+>/?' => 'profile/user',
'category/<id:\S+>' => 'category/detail',
'<controller:\w+>/<id:\d+>' => '<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
'request-password-reset' => 'site/request-password-reset',
'reset-password/<token:\S+>' => 'site/reset-password',
'logout' => 'site/logout',
'login' => 'site/login',
由于 '<controller:\w+>/<action:\w+>' => '<controller>/<action>'
是在 'profile/<id:[0-9a-zA-Z\-]+>/?' => 'profile/user'
之前定义的,它永远不会到达配置文件,因为它将它识别为 controller/action。