在laravel中处理生成的url


Handling generated urls in laravel?

作为学校项目的一部分,我正在制作一个链接缩短器

Route::get('{short_url}', array('uses' => 'UrlController@shortUrlRedirect');

这个功能单独运行很好,但由于我有其他功能,如

Route::post('register', array('uses' => 'HomeController@doRegister'));

每当example.com/anylink

现在使用,它由一个函数单独处理。

我发现一个可行的解决方案是做一些类似的事情:

Route::get('url/{short_url}', array('uses' => 'UrlController@shortUrlRedirect');

当然,对于链接缩短器,目标是尽可能少地使用字符。

有什么想法可以在拉拉威尔内部处理这个问题吗?

routes.php文件中的路由越早或"越高",它的优先级就越高,因此,如果您定义两个相同的路由或两个匹配一种模式的路由,就像您的示例中一样,第一个路由将被执行。

因此,您应该更早地定义register路由,因为它不应该被{short_url}覆盖。

以下是解释:路线:先进先出

TL;DR:Laravel接收到一个请求,并使用请求的URI在迭代路由文件时找到一个匹配的模式,当它找到一个时,它会break;循环。