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>
块中配置
这应该确保路由能够解析。
我刚开始使用 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>
块中配置
这应该确保路由能够解析。