2014-04-06 47 views
3

我正在使用Silex 1.1和PHP 5.3,我如何在路由中使結尾「/」爲可選項?silex如何使路由結束「/」可選

目前我有兩條路線做同樣的事情

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

是否可以指定只有一次,途徑結束「/」是可選的?如何?

感謝

+1

如果您使用尾部斜線定義路線,那麼沒有尾部斜線的任何請求將返回301重定向到正確的路線。因此,定義'/ item/{id} /',任何對'/ item/{id}'的請求應該返回一個301重定向到'/ item/{id} /'。 –

+0

謝謝!不確定你是否想作爲回答發佈,所以我可以接受它作爲答案。 – forestclown

回答

8

如果定義以斜線的路線,沒有斜線任何請求都將返回一個301重定向到正確的一個。所以定義/item/{id}//item/{id}任何請求應該返回一個301重定向到/item/{id}/

+0

但後來''/ item /''將無法到達(找不到'/ item /'的路線) – GDmac

+1

@GDmac我的解決方案與'/ item /'無關,這應該是不同的路線。如果你定義它,它會起作用。 –

0

我解決它取代在我自己的請求實例PATH_INFO參數。

$request = Request::createFromGlobals(); 

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

$app->run($request);