如何使 URL 中的参数名称默认并在 Kohana 中隐藏


How to make parameter name in URL default and hidden in Kohana?

我正在努力使这项工作。我希望我的路由像这样运行:当我输入网址时,即。 example.com/api/getpage/http://smth.com我想在我的操作中检索具有http://smth.comid参数。我在这种情况下的路由现在如下所示:

Route::set('api', 'api/<action>/<id>')
    ->defaults(array(
        'controller' => 'api',
        'action'     => 'index'
    ));

以及实际操作:

public function action_getpage()
    {
        $obj = $this->scrape($this->request->query('id'));
        $this->response->body(json_encode($obj));
    }

现在像这样的 URL example.com/api/getpage?id=http://smth.com像一个魅力,但我不希望这样。有什么办法可以实现这一目标吗?提前感谢所有建议。

问题是你不能在 url 段中使用斜杠(get 参数除外)。 这与kohana路由无关,而是与您的Web服务器如何处理它有关。 唯一的解决方法是用别的东西代替他的斜杠。 如果您作为最终段传递的 url 在其末尾有 get 参数,则问号会导致它被视为主 url 的 get 参数,而不是最终段。

另一种选择是对最终 url 段进行 base64 编码,然后在控制器中对其进行解码。 这将消除任何斜杠和问号。 Php 具有简单的base64_encode和base64_decode函数。 唯一的缺点是 url 的一部分看起来像一个任意的乱码字符串。 http://php.net/manual/en/function.base64-encode.php