donglang1894 2018-06-03 19:22
浏览 104
已采纳

Yii2:如何使用UrlManager重定向到?

In my Yii2 config I have:

'components' => [
    'urlManager' => [

        'baseUrl'         => '',
        'enablePrettyUrl' => true,
        'showScriptName'  => false,

        'rules' => [
            'search' => 'site/index',
            ...
        ],
    ...

If I go to site.com/search it works. If I go to site.com/site/index it also works and shows the same content. How to redirect the call instead of just showing the response of site/index? It must also redirect with params (site.com/site/index?param=1 -> site.com/search?param=1)

  • 写回答

2条回答 默认 最新

  • doula2426 2018-06-04 07:48
    关注

    The UrlManager does not redirect. It rather does a rewrite like a web server. It is called routing.

    If you would like to do a redirect in your code you can use Response::redirect(). If you don't have a SearchController where you can put this statement in an action, you can place it into the beforeAction event event. You can do this in your configuration array:

    [
        'components' = [
            ...
        ],
        'on beforeAction' => function ($event) {
            if(Yii::$app->request->pathInfo === 'search') {
                $url = 'site/index?' . Yii::$app->request->queryString;
                Yii::$app->response->redirect($url)->send();
                $event->handled = true;
            }
        }
    ]
    

    Or if you have SearchController use:

    class SearchController extends \yii\web\Controller {
        public function actionIndex() {
            $url = 'site/index?' . Yii::$app->request->queryString;
            return $this->redirect($url);
        }
    }
    

    Third option is to configure the web server to do the redirect. That would be the fastest solution.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记