我uuualy使用Laravel 4,现在我正在尝试学习Laravel 5
命名控制器路由时出现问题:
我的路线如下:
Route::get('/', [
'uses' => 'HomeController@viewHome',
'as' => 'home'
]);
Route::get('/events', [
'uses' => 'EventController@viewEvent',
'as' => 'event'
]);
当我以'home'(localhost / laravel /)的方式运行路线时,它的工作非常完美
但是当我将路径作为'event'(localhost / laravel / events)运行时:找不到对象!
我已经确保viewEvent方法正确运行,如下所示:
Route::get('/', [
'uses' => 'EventController@viewEvent',
'as' => 'home'
]);
Route::get('/events', [
'uses' => 'HomeController@viewHome',
'as' => 'event'
]);
我可以运行viewEvent,但我无法运行viewHome
我的代码有什么问题吗?
========================已解决====================== =======
帮助@DamienPirzy并且我意识到当我禁用/ public /文件夹时我想我必须将.htaccess输出到主文件夹:)
感谢所有人的快速反应:)解决了问题
答案 0 :(得分:4)
将此htaccess放入公用文件夹。确保你有apache mod重写工作。
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
答案 1 :(得分:2)
我在routes.php中看到了
Route::get('/events', [
'uses' => 'EventController@viewEvent',
'as' => 'event'
]);
但你跑
localhost/laravel/event
应该运行
localhost/laravel/events
答案 2 :(得分:2)
你能查看.htaccess文件吗? 因为屏幕错误来自Apache。请求没有发送到Laravel App。
或检查mod_rewrite是否已启用?
答案 3 :(得分:0)
尝试将.htaccess文件更改为此
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
答案 4 :(得分:0)
从公用文件夹复制htacess文件并将其粘贴到根目录中。它应该解决问题,还要检查所有路线的拼写;他们必须是正确的。
答案 5 :(得分:0)
在项目名称后添加 index.php,如 localhost/cms/index.php/ 通过这样做,您的所有路线都在工作