如何在URL中默认设置参数名称并隐藏在Kohana中?

时间:2013-01-26 15:33:08

标签: php routing kohana

我正在尝试做这项工作。我希望我的路由行为如下: 当我键入URL即。 example.com/api/getpage/http://smth.com我想在我的id参数中检索http://smth.com值。 我对此案例的路由现在看起来像这样:

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));
    }

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

1 个答案:

答案 0 :(得分:2)

问题是你不能在url段中使用斜杠(get参数除外)。这与kohana路由无关,而是与您的Web服务器如何处理它。围绕它的唯一方法是用其他东西替换他的斜杠。如果您在最后一个段中传递的URL在其末尾获得参数时,您也会遇到问题,问号将导致它被视为主URL的get参数,而不是最终段。

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