Laravel 5 - RouteCollection.php 第 143 行中的 NotFoundHttpException

Posted

技术标签:

【中文标题】Laravel 5 - RouteCollection.php 第 143 行中的 NotFoundHttpException【英文标题】:Laravel 5 - NotFoundHttpException in RouteCollection.php line 143 【发布时间】:2015-10-17 08:27:27 【问题描述】:

我得到这个错误:

Sorry, the page you are looking for could not be found.

1/1
NotFoundHttpException in RouteCollection.php line 143:
in RouteCollection.php line 143
at RouteCollection->match(object(Request)) in Router.php line 746
at Router->findRoute(object(Request)) in Router.php line 655
at Router->dispatchToRoute(object(Request)) in Router.php line 631
at Router->dispatch(object(Request)) in Kernel.php line 229
at Kernel->Illuminate\Foundation\Http\closure(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 139
at Pipeline->Illuminate\Pipeline\closure(object(Request)) in VerifyCsrfToken.php line 50
at VerifyCsrfToken->handle(object(Request), object(Closure))
at call_user_func_array(array(object(VerifyCsrfToken), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\closure(object(Request)) in ShareErrorsFromSession.php line 54
at ShareErrorsFromSession->handle(object(Request), object(Closure))
at call_user_func_array(array(object(ShareErrorsFromSession), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\closure(object(Request)) in StartSession.php line 62
at StartSession->handle(object(Request), object(Closure))
at call_user_func_array(array(object(StartSession), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\closure(object(Request)) in AddQueuedCookiesToResponse.php line 37
at AddQueuedCookiesToResponse->handle(object(Request), object(Closure))
at call_user_func_array(array(object(AddQueuedCookiesToResponse), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\closure(object(Request)) in EncryptCookies.php line 59
at EncryptCookies->handle(object(Request), object(Closure))
at call_user_func_array(array(object(EncryptCookies), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\closure(object(Request)) in CheckForMaintenanceMode.php line 42
at CheckForMaintenanceMode->handle(object(Request), object(Closure))
at call_user_func_array(array(object(CheckForMaintenanceMode), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\closure(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103
at Pipeline->then(object(Closure)) in Kernel.php line 118
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 86
at Kernel->handle(object(Request)) in index.php line 64

我真的不明白这是什么问题。 我运行以下命令:

composer dump-autoload
php artisan clear-compiled
php artisan route:clear

没有任何效果。

Laravel 安装在一个子目录(public_html/ecodryer)下,指向公共目录的指针由 .htaccess 配置:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %HTTP_HOST ^landings.yaza.co.il/ecodryer$ [NC,OR]
RewriteCond %REQUEST_URI !ecodryer/public/
RewriteRule (.*) /ecodryer/public/$1 [L]
</IfModule>

路线文件:

<?php

Route::get('/', function () 
    return view('pages.site.main');
);

有什么建议吗?

先谢谢了!

【问题讨论】:

请分享您的 routes.php 文件。您正在到达您尚未定义的路线。 @hhsadiq 我已经添加了 routes.php 文件。 发布你的控制器页面.. 【参考方案1】:

这是您的 routes.php 声明的问题,请确保您已为您尝试访问的 url 定义了一个路由。例如:

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

你可以在 Laravel 网站上找到更详细的语法: http://laravel.com/docs/5.1/routing

编辑:

根据您的 routes.php - 更改您的路线以反映:

Route::get('ecodryer', function () 
    return view('pages.site.main');
);

【讨论】:

完美!这就是问题所在,我已经按照您的建议更改了路线,现在可以使用了 :) 谢谢!【参考方案2】:

有时这种问题来自服务器的文件夹结构,例如 url 就像localhost/project/。尝试为您的本地项目创建一个虚拟主机。它还提供了一些额外的好处。 How to create a virtual host on wamp

【讨论】:

【参考方案3】:

对于那些在 laravel 版本 5.4.10(或@Chen Alon 提到的 5.3 及更高版本)中遇到类似错误的人,routes.php 文件默认已被删除,如果您仍想使用它,则只需创建文件即可不够。我们需要在“map”函数内的 RouteServiceProvider.php 文件中包含文件。在 map 函数中添加以下行为我解决了这个问题:

require app_path('Http/routes.php');

【讨论】:

在 Laravel 5.3 中引入了 routes.php 文件的变化。只需像使用之前的 HTTP/routes.php 文件一样使用 routes/web.php【参考方案4】:

index.php 有时会出现这种问题。通过以下方式测试您的路线:

路由/index.php

yourdomain/public/Route/index.php

您可以通过配置 apache 和虚拟主机从 URL 中删除 index.php。 this link可以帮到你。

【讨论】:

【参考方案5】:
Route::get('hello', 'Hello@index');

它应该在 /projectname/routes/web.php 下

【讨论】:

以上是关于Laravel 5 - RouteCollection.php 第 143 行中的 NotFoundHttpException的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5 和 Laravel 5.1 “找不到类‘模型名称’”,有更好的解决方案吗?

Laravel 5 安装错误

从 Laravel 5.3 升级到 Laravel 5.4 并且空字段转换为 NULL

Laravel 5.5:laravel.log 无法打开:权限被拒绝

Laravel 会话立即过期(Laravel 5.5)

从 laravel 5 升级到 laravel 5.5 导致错误参数 1 传递给 App\Exceptions\Handler::report()