【问题标题】:Laravel NotFoundHttpException for route路由的 Laravel NotFoundHttpException
【发布时间】:2017-05-09 07:09:58
【问题描述】:

我在 XAMPP 5.6.15 中使用 Laravel 5.3.28、PHP 5.6.15

在我的文件 routes\web.php 我添加

Route::get('/about', 'DefaultController@about');

(控制器、方法和视图存在)

php artisan route:list 返回

    +--------+----------+------------+------+----------------------------------------------+--------------+
| Domain | Method   | URI        | Name | Action                                       | Middleware   |
+--------+----------+------------+------+----------------------------------------------+--------------+
|        | GET|HEAD | /          |      | App\Http\Controllers\DefaultController@home  | web          |
|        | GET|HEAD | about      |      | App\Http\Controllers\DefaultController@about | web          |
|        | GET|HEAD | api/user   |      | Closure                                      | api,auth:api |
+--------+----------+------------+------+----------------------------------------------+--------------+

当我尝试浏览时,会引发 Not Found 异常。在论坛中查找错误,我了解这是由于 Laravel 或 .htaccess 文件的配置不正确造成的。 我不明白如何正确解决问题以及为什么在documentation 中没有提到需要此文件。 感谢大家的任何帮助或建议。

更新

这里按照要求显示错误信息

RouteCollection.php 第 161 行中的 NotFoundHttpException:

in RouteCollection.php line 161
at RouteCollection->match(object(Request)) in Router.php line 766
at Router->findRoute(object(Request)) in Router.php line 621
at Router->dispatchToRoute(object(Request)) in Router.php line 607
at Router->dispatch(object(Request)) in Kernel.php line 268
at Kernel->Illuminate\Foundation\Http\{closure}(object(Request)) in Pipeline.php line 53
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in CheckForMaintenanceMode.php line 46
at CheckForMaintenanceMode->handle(object(Request), object(Closure)) in Pipeline.php line 137
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 33
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in Pipeline.php line 104
at Pipeline->then(object(Closure)) in Kernel.php line 150
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 117
at Kernel->handle(object(Request)) in index.php line 54

【问题讨论】:

  • 你能发布你得到的整个 Laravel 错误吗?
  • 您尝试/about 并且其他路线是否有效?
  • 该文件是 laravel 自带的,位于 public 文件夹中。那应该是您的文档根目录。除此之外检查 mod_rewrite 是否开启
  • routes\web.php 是什么?也许我弄错了,但 Laravel 5.3 中的路由没有定义在 app\Http\routes.php
  • @DainisAbols 从 5.3 开始,Laravel 使用 routes/web.php 进行 Web 请求,使用 routes/api.php 进行 api 请求。

标签: php .htaccess laravel


【解决方案1】:

正如我在对原始问题的评论中所写,我在 public 文件夹中找到了 .htaccess 文件。 我是这样修改规则的

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
RewriteBase /mylaravel/public/          #----> ADDED THIS
RewriteRule ^(.+)$ index.php/$1 [QSA,L] #----> TWO ROW
# RewriteRule ^ index.php [L]           #----> INSTEAD OF THIS

# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

这样的网址:

  • localhost/mylaravelproject/public/
  • localhost/mylaravelproject/public/about
  • localhost/mylaravelproject/public/orders
  • localhost/mylaravelproject/public/orders/1
  • ...

使用正确的路线

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-10
    • 1970-01-01
    • 2016-09-25
    • 1970-01-01
    • 1970-01-01
    • 2015-11-23
    • 2017-11-15
    • 2014-02-10
    相关资源
    最近更新 更多