Laravel returns 现有控制器上的 404

Laravel returns 404 on existing controller

我刚开始使用 laravel,我很喜欢它,但是我遇到了一个问题,

Routes.php:

Route::get('/', 'SongsController@index'); => this works perfectly
Route::get('/index', 'SongsController@index'); => this fails and returns 404
Route::get('index', 'SongsController@index'); => this also returns 404

这里有几点需要注意:

根据经验,大多数通用匹配项应出现在底部,以免在更具体的路由之前被触发:

Route::get('/index', 'SongsController@index');
Route::get('/', 'SongsController@index');

接下来,通过在路由前附加 index.php 确保您可以访问该路由。

http://my.site.tld/index.php/index

如果解决了,但没有 index.php,则做两件事:

  • 确保 mod_headers 已启用。

    • sudo a2enmod headers - ubuntu
    • 修改httpd.conf并检查mod_headers.so(确保没有被注释掉)- RHEL/CentOS
  • 确保 "AllowOverride All" 已在 "my.site.tld"

  • 的虚拟主机中的 <Directory> 块中配置

这应该确保路由能够解析。