【问题标题】:silex how to make route ending "/" optionalsilex如何使路由结束“/”可选
【发布时间】:2014-04-06 04:04:57
【问题描述】:

我正在使用 Silex 1.1 和 PHP 5.3,如何在路由中设置结尾“/”可选?

目前我有两条路线在做同样的事情

$app->get('/item/{id}/', function( $id ) use ($app) {
  /** Codes Here **/
});
$app->get('/item/{id}', function( $id ) use ($app) {
  /** Codes Here **/
});

如果结尾“/”是可选的,是否可以只指定一次路由?以及如何?

谢谢

【问题讨论】:

  • 如果你用斜杠定义路由,任何没有斜杠的请求都会返回一个 301 重定向到正确的请求。所以定义/item/{id}/,任何对/item/{id}的请求都应该返回一个301重定向到/item/{id}/。
  • 谢谢!不确定您是否要发布作为答案,以便我可以接受它作为答案。

标签: php routes silex


【解决方案1】:

如果您使用尾部斜杠定义路由,则任何没有尾部斜杠的请求都将返回 301 重定向到正确的请求。所以定义/item/{id}/,任何对/item/{id}的请求都应该返回一个301重定向到/item/{id}/

【讨论】:

  • 但是/item/ 将无法访问(找不到'/item/'的路线)
  • @GDmac 我的解决方案与/item/ 无关,应该是不同的路线。如果你定义它,它就会起作用。
【解决方案2】:

我解决了它替换我自己的请求实例中的PATH_INFO 参数。

$request = Request::createFromGlobals();

$request->server->set('REQUEST_URI', rtrim($request->server->get('REQUEST_URI'), "/"));

$app->run($request);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-05
    • 2015-05-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多