首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Yii2只能使用漂亮的URL进行访问

Yii2只能使用漂亮的URL进行访问
EN

Stack Overflow用户
提问于 2016-10-15 00:28:22
回答 2查看 63关注 0票数 0

我使用URL管理器,如下所示:

代码语言:javascript
运行
复制
'urlManager' => [
            'enablePrettyUrl' => true,
            'showScriptName' => false,
            'rules' => [                
                'verses/view/<id:\d+>' => 'verses/view',                
            ],
        ],

使用mysite.com/verses/view/158进行访问是很好的。问题是,仍然可以使用非漂亮的URL访问相同的内容,例如使用普通的get参数(如mysite.com/verses/view?id=158 )。我需要任何方法来限制访问使用漂亮的URL。

我试过以下几种不同的规则,但没有得到任何结果:

  1. 'verses/view<?id=>' => 'Error404',
  2. 'verses/view?id=<\d+>' => 'Error404',
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-15 05:48:16

这种限制有何意义呢?

不管怎样,有一种方法是这样的:

代码语言:javascript
运行
复制
public function actionView($id)
{
    if (strpos(\Yii::$app->request->getUrl(), '?') !== false) {
        throw new \yii\web\BadRequestHttpException;
    }
    // ... the rest of action
}

不需要改变UrlManager。

票数 1
EN

Stack Overflow用户

发布于 2016-10-15 06:44:36

尝试使用UrlManager参数enableStrictParsing = true

发生了什么。UrlManager检查所有规则,它们都与请求不匹配。因此,默认情况下,它检查所有默认规则。在默认规则中,它使用?id=查找规则,并预先形成路由到该规则。

因此,为了避免该路由,您需要在UrlManger规则中列出所有可能的路由并创建enableStrictParsing = true。配置rules参数中未列出的路由将被忽略。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40053770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档