Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么laravel路由必须优先顺序,否则找不到页面?_Php_Laravel_Redis - Fatal编程技术网

Php 为什么laravel路由必须优先顺序,否则找不到页面?

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

我正在学习如何在Laravel中使用Redis,发现了一个奇怪的东西,比如: 当路由
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}。。。这似乎是原因。酷!今天我也学到了一些东西:)好吧,我明白了,谢谢你们,伙计们。这帮了大忙!