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