1

这是我的 slim3 示例FastRoute

$app->get('/api/search/[{domaine}[/{notused:.+}]]', function ($request, $response, $args) {
    return $this->renderer->render($response, 'index.phtml', $args);
});

使用这个 FastRoute“正则表达式”([{domaine}[/{notused:.+}]]),我匹配:

/api/search/sample.com  
/api/search/sample.com/test  
/api/search/  

并且 $args['domaine'] 返回“sample.com”。

但我也想匹配这个:

/api/search/http://sample.com  
/api/search/https://sample.com  

像这样添加新路线:

$app->get('/api/search/http://[{domaine}[/{notused:.+}]]' ...   
$app->get('/api/search/https://[{domaine}[/{notused:.+}]]' ...  

但最好只有一条线。

有任何想法吗 ?

4

1 回答 1

1

使用 url 编码的 url 作为查询参数会更好。

但是当你真的要使用它时,你也可以正则表达式 http(s) 部分

$app->get('/api/search/{urlSchema:https?}://[{domaine}[/{notused:.+}]]', ..);

这意味着它需要http然后有 0-1 s

于 2017-01-11T16:23:05.907 回答