Yii2 URL路由用于制作Slug URL

时间:2016-08-28 13:44:25

标签: php url yii2 url-routing

我在yii2上学习, 制作网址时我遇到了问题。 这是我的网址配置

'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',

            ),
        ],

问题在于配置文件路由。 在这种情况下:

  1. http://localhost/myapps/profile/some-url/ - &gt;使用添加的斜杠 url的结尾
  2. http://localhost/myapps/profile/some-url - &gt;在网址末尾没有斜线并且没有工作且错误404
  3. http://localhost/myapps/profile/someurl - &gt;没有工作错误404。
  4. http://localhost/myapps/profile/first-second-third - &gt;我们没有斜线到底是在工作
  5. 我真的很困惑,我一直在寻找上一个问题并尝试不用处理我的案子。

    有人能解决我的问题吗?

1 个答案:

答案 0 :(得分:1)

只需将您的个人资料别名移到列表顶部:

'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',它永远不会到达个人资料,因为它将其视为控制者/行动。