1

我的 Phalcon Micro 应用程序接收带有编码斜杠 (%2F) 的 URI 部分。

例如,在调用之前$app->handle()

echo $app->request->getURI(); // -> /resources/res%2F01/all

但看起来该$app->handle()方法正在解码我的 URI,将我的 %2F 转换为斜杠。因此,以下路由规则...

$app->get('/resources/{code:[^\/]+}/all', function() { /* ... */ });

... 将无法正常工作,因为 %2F 现在是斜线。控制器端,%2F 不再存在。

echo $code // -> res/01

有没有办法告诉 Phalcon 不要解码 URI?


编辑

最后,Phalcon 没有解码 URI,而是基于$_GET['_url']其路由参数,并且那里已经缺少 %2F 代码。

4

1 回答 1

1

路由正则表达式不接受您的网址。您不允许在路由定义中使用斜杠 - [^\/]+

如果要路由匹配此 url,路由定义必须如下所示:

$app->get('/resources/{code:.+}/all', function() { /* ... */ });

有没有办法告诉 Phalcon 不要解码 URI?

我想不是。

于 2017-06-02T10:51:34.360 回答