Php 为什么laravel路由必须优先顺序,否则找不到页面?
我正在学习如何在Laravel中使用Redis,发现了一个奇怪的东西,比如: 当路由Php 为什么laravel路由必须优先顺序,否则找不到页面?,php,laravel,redis,Php,Laravel,Redis,我正在学习如何在Laravel中使用Redis,发现了一个奇怪的东西,比如: 当路由articles/trending在路由articles/{article}上面时,路由article/trending可以正常工作: 当articles/{article}在上面的articles/trending上时,找不到路由articles/trending 谁能告诉我原因?非常感谢 因为路由中的{article}语句只不过是一个占位符 如果你把 Route::get('articles/{articl
articles/trending
在路由articles/{article}
上面时,路由article/trending
可以正常工作:
当articles/{article}
在上面的articles/trending
上时,找不到路由articles/trending
谁能告诉我原因?非常感谢 因为路由中的
{article}
语句只不过是一个占位符
如果你把
Route::get('articles/{article}')
在具有该结构的其他路线之上
Route::get('articles/...')
然后{article}
语句将捕获您在/
之后放置的所有内容
这是因为Laravel的路由器(以及AFAIK,无论是什么语言或框架的每个路由器)都在寻找URL和定义的路由之间的第一个可能匹配
{article}
是一个占位符,如果先定义,将始终是第一个可能的匹配项。疯狂但有根据的猜测:因为{article}
理论上可以是任何东西。Laravel的路由器将始终使用第一个可能的匹配项。如果你把{article}
路线放在第一位,那永远是第一个可能的匹配。哦,我突然感到灵感迸发。好的,如果我先选择“articles/{article}”,当我在浏览器中输入“article/trending”路由器时,laravel将把趋势匹配为变量{article}。。。这似乎是原因。酷!今天我也学到了一些东西:)好吧,我明白了,谢谢你们,伙计们。这帮了大忙!