如何在yii2中从URL隐藏ID

问题描述

我正在尝试从 url 隐藏blog id

为了更好地理解:

我想要这个URL

mysite/blog/post-slug-<id>  // will be like: mysite/blog/post-slug-358

更改为

mysite/blog/post-slug

这是我的网址代码

<a href="<?= Url::to(['post/view','id' => $model->id,'slug' => $model->slug ]) ?>">

这是我的 config / main

'urlManager' => [
            'class' => 'yii\web\UrlManager','enablePrettyUrl' => true,'showScriptName' => false,'rules' => [
                    'blog/<slug>-<id>' => 'blog/view',]

有人可以帮我解决吗?

解决方法

从您的网址管理器中删除-<id>

    'urlManager' => [
        'class' => 'yii\web\UrlManager','enablePrettyUrl' => true,'showScriptName' => false,'rules' => [
            'blog/<slug>' => 'blog/view',]
     ]

然后在actionView的BlogController中,可以使用以下代码获取它:

$slug = Yii::$app->getRequest()->getQueryParam('slug');

我不确定“阶级”是否必要?我在我的项目中如何使用它:

   'urlManager' => [
        'baseUrl' => '/','rules' => [
            'ajax/<action>' => 'ajax/<action>','<first_step>/<second_step>/<third_step>' => 'page/index','<first_step>/<second_step>' => 'page/index','<first_step>' => 'page/index','<first_step:.+/>' => 'page/index',// redirect 301 /
        ],],