未找到Laravel 5路由对象

时间:2015-04-20 07:14:09

标签: php laravel laravel-5 laravel-routing

我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)运行时:找不到对象! enter image description here

我已经确保viewEvent方法正确运行,如下所示:

Route::get('/', [
    'uses' => 'EventController@viewEvent', 
    'as' => 'home'
]);

Route::get('/events', [
        'uses' => 'HomeController@viewHome', 
        'as' => 'event'
    ]);

我可以运行viewEvent,但我无法运行viewHome

我的代码有什么问题吗?

========================已解决====================== =======

帮助@DamienPirzy并且我意识到当我禁用/ public /文件夹时我想我必须将.htaccess输出到主文件夹:)

感谢所有人的快速反应:)解决了问题

6 个答案:

答案 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/ 通过这样做,您的所有路线都在工作