Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

rgiaviti's avatar

[L5] NotFoundHttpException when ommiting index.php from URL

Hi guys!

I recently migrated my application to Laravel 5.0 and everything is working perfectly fine. Except one thing. One lttle thing.

In development, when I try to access my application, I type: http://localhost/app/ but an error is shown:

NotFoundHttpException in RouteCollection.php line 145:

in RouteCollection.php line 145
at RouteCollection->match(object(Request)) in Router.php line 716
at Router->findRoute(object(Request)) in Router.php line 642
at Router->dispatchToRoute(object(Request)) in Router.php line 618
at Router->dispatch(object(Request)) in Kernel.php line 157
at Kernel->Illuminate\Foundation\Http\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 141
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in VerifyCsrfToken.php line 43
at VerifyCsrfToken->handle(object(Request), object(Closure)) in VerifyCsrfToken.php line 17
at VerifyCsrfToken->handle(object(Request), object(Closure)) in Pipeline.php line 125
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in ShareErrorsFromSession.php line 55
at ShareErrorsFromSession->handle(object(Request), object(Closure)) in Pipeline.php line 125
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in StartSession.php line 62
at StartSession->handle(object(Request), object(Closure)) in Pipeline.php line 125
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in AddQueuedCookiesToResponse.php line 36
at AddQueuedCookiesToResponse->handle(object(Request), object(Closure)) in Pipeline.php line 125
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in EncryptCookies.php line 40
at EncryptCookies->handle(object(Request), object(Closure)) in Pipeline.php line 125
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in CheckForMaintenanceMode.php line 42
at CheckForMaintenanceMode->handle(object(Request), object(Closure)) in Pipeline.php line 125
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 101
at Pipeline->then(object(Closure)) in Kernel.php line 108
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 83
at Kernel->handle(object(Request)) in index.php line 53

However, if I put the index.php, it works! http://localhost/app/index.php. I checked .htaccess and it seems to be OK. My routes.php and controllers. Take a look.

<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>

routes.php

<?php

$router->get('/', ['before' => 'isLogged', 'uses' => 'HomeController@index']);
?>

HomeController.php

<?php namespace App\Http\Controllers;

use App\Http\Requests;
use App\Http\Controllers\Controller;

class HomeController extends Controller {

    /**
     * Show the application dashboard to the user.
     *
     * @return Response
     */
    public function index() {
        
        return view('index');
    }
}
0 likes
18 replies
bestmomo's avatar

Could you show what php artisan route:list generate ?

rgiaviti's avatar

Sure.

+--------+----------+----------------------------------------------------+---------------------------------+-----------------------------------------------------------------------+------------+
| Domain | Method   | URI                                                | Name                            | Action                                                                | Middleware |
+--------+----------+----------------------------------------------------+---------------------------------+-----------------------------------------------------------------------+------------+
|        | GET|HEAD | /                                                  |                                 | App\Http\Controllers\HomeController@index                             |            |
|        | GET|HEAD | login                                              |                                 | App\Http\Controllers\LoginController@index                            |            |
|        | POST     | login                                              |                                 | App\Http\Controllers\LoginController@login                            |            |
|        | GET|HEAD | logout                                             |                                 | App\Http\Controllers\LoginController@logout                           |            |
|        | GET|HEAD | admin/usuario                                      | admin.usuario.index             | App\Http\Controllers\Admin\Usuario\UsuarioController@index            |            |
|        | GET|HEAD | admin/usuario/create                               | admin.usuario.create            | App\Http\Controllers\Admin\Usuario\UsuarioController@create           |            |
|        | POST     | admin/usuario                                      | admin.usuario.store             | App\Http\Controllers\Admin\Usuario\UsuarioController@store            |            |
|        | GET|HEAD | admin/usuario/{usuario}                            | admin.usuario.show              | App\Http\Controllers\Admin\Usuario\UsuarioController@show             |            |
|        | GET|HEAD | admin/usuario/{usuario}/edit                       | admin.usuario.edit              | App\Http\Controllers\Admin\Usuario\UsuarioController@edit             |            |
|        | PUT      | admin/usuario/{usuario}                            | admin.usuario.update            | App\Http\Controllers\Admin\Usuario\UsuarioController@update           |            |
|        | PATCH    | admin/usuario/{usuario}                            |                                 | App\Http\Controllers\Admin\Usuario\UsuarioController@update           |            |
|        | DELETE   | admin/usuario/{usuario}                            | admin.usuario.destroy           | App\Http\Controllers\Admin\Usuario\UsuarioController@destroy          |            |
|        | GET|HEAD | admin/usuario/{usuario}/perfil                     | admin.usuario.perfil.index      | App\Http\Controllers\Admin\Usuario\UsuarioPerfilController@index      |            |
|        | GET|HEAD | admin/usuario/{usuario}/perfil/create              | admin.usuario.perfil.create     | App\Http\Controllers\Admin\Usuario\UsuarioPerfilController@create     |            |
|        | POST     | admin/usuario/{usuario}/perfil                     | admin.usuario.perfil.store      | App\Http\Controllers\Admin\Usuario\UsuarioPerfilController@store      |            |
|        | GET|HEAD | admin/usuario/{usuario}/perfil/{perfil}            | admin.usuario.perfil.show       | App\Http\Controllers\Admin\Usuario\UsuarioPerfilController@show       |            |
|        | GET|HEAD | admin/usuario/{usuario}/perfil/{perfil}/edit       | admin.usuario.perfil.edit       | App\Http\Controllers\Admin\Usuario\UsuarioPerfilController@edit       |            |
|        | PUT      | admin/usuario/{usuario}/perfil/{perfil}            | admin.usuario.perfil.update     | App\Http\Controllers\Admin\Usuario\UsuarioPerfilController@update     |            |
|        | PATCH    | admin/usuario/{usuario}/perfil/{perfil}            |                                 | App\Http\Controllers\Admin\Usuario\UsuarioPerfilController@update     |            |
|        | DELETE   | admin/usuario/{usuario}/perfil/{perfil}            | admin.usuario.perfil.destroy    | App\Http\Controllers\Admin\Usuario\UsuarioPerfilController@destroy    |            |
|        | GET|HEAD | admin/usuario/{usuario}/atividade                  | admin.usuario.atividade.index   | App\Http\Controllers\Admin\Usuario\UsuarioAtividadeController@index   |            |
|        | GET|HEAD | admin/usuario/{usuario}/atividade/create           | admin.usuario.atividade.create  | App\Http\Controllers\Admin\Usuario\UsuarioAtividadeController@create  |            |
|        | POST     | admin/usuario/{usuario}/atividade                  | admin.usuario.atividade.store   | App\Http\Controllers\Admin\Usuario\UsuarioAtividadeController@store   |            |
|        | GET|HEAD | admin/usuario/{usuario}/atividade/{atividade}      | admin.usuario.atividade.show    | App\Http\Controllers\Admin\Usuario\UsuarioAtividadeController@show    |            |
|        | GET|HEAD | admin/usuario/{usuario}/atividade/{atividade}/edit | admin.usuario.atividade.edit    | App\Http\Controllers\Admin\Usuario\UsuarioAtividadeController@edit    |            |
|        | PUT      | admin/usuario/{usuario}/atividade/{atividade}      | admin.usuario.atividade.update  | App\Http\Controllers\Admin\Usuario\UsuarioAtividadeController@update  |            |
|        | PATCH    | admin/usuario/{usuario}/atividade/{atividade}      |                                 | App\Http\Controllers\Admin\Usuario\UsuarioAtividadeController@update  |            |
|        | DELETE   | admin/usuario/{usuario}/atividade/{atividade}      | admin.usuario.atividade.destroy | App\Http\Controllers\Admin\Usuario\UsuarioAtividadeController@destroy |            |
|        | GET|HEAD | admin/ano                                          | admin.ano.index                 | App\Http\Controllers\Admin\AnoController@index                        |            |
|        | GET|HEAD | admin/ano/create                                   | admin.ano.create                | App\Http\Controllers\Admin\AnoController@create                       |            |
|        | POST     | admin/ano                                          | admin.ano.store                 | App\Http\Controllers\Admin\AnoController@store                        |            |
|        | GET|HEAD | admin/ano/{ano}                                    | admin.ano.show                  | App\Http\Controllers\Admin\AnoController@show                         |            |
|        | GET|HEAD | admin/ano/{ano}/edit                               | admin.ano.edit                  | App\Http\Controllers\Admin\AnoController@edit                         |            |
|        | PUT      | admin/ano/{ano}                                    | admin.ano.update                | App\Http\Controllers\Admin\AnoController@update                       |            |
|        | PATCH    | admin/ano/{ano}                                    |                                 | App\Http\Controllers\Admin\AnoController@update                       |            |
|        | DELETE   | admin/ano/{ano}                                    | admin.ano.destroy               | App\Http\Controllers\Admin\AnoController@destroy                      |            |
|        | GET|HEAD | admin/forcarlogin                                  | admin.forcarlogin.index         | App\Http\Controllers\Admin\ForcarLoginController@index                |            |
|        | GET|HEAD | admin/forcarlogin/create                           | admin.forcarlogin.create        | App\Http\Controllers\Admin\ForcarLoginController@create               |            |
|        | POST     | admin/forcarlogin                                  | admin.forcarlogin.store         | App\Http\Controllers\Admin\ForcarLoginController@store                |            |
|        | GET|HEAD | admin/forcarlogin/{forcarlogin}                    | admin.forcarlogin.show          | App\Http\Controllers\Admin\ForcarLoginController@show                 |            |
|        | GET|HEAD | admin/forcarlogin/{forcarlogin}/edit               | admin.forcarlogin.edit          | App\Http\Controllers\Admin\ForcarLoginController@edit                 |            |
|        | PUT      | admin/forcarlogin/{forcarlogin}                    | admin.forcarlogin.update        | App\Http\Controllers\Admin\ForcarLoginController@update               |            |
|        | PATCH    | admin/forcarlogin/{forcarlogin}                    |                                 | App\Http\Controllers\Admin\ForcarLoginController@update               |            |
|        | DELETE   | admin/forcarlogin/{forcarlogin}                    | admin.forcarlogin.destroy       | App\Http\Controllers\Admin\ForcarLoginController@destroy              |            |
|        | GET|HEAD | admin/parametro                                    | admin.parametro.index           | App\Http\Controllers\Admin\ParametroController@index                  |            |
|        | GET|HEAD | admin/parametro/create                             | admin.parametro.create          | App\Http\Controllers\Admin\ParametroController@create                 |            |
|        | POST     | admin/parametro                                    | admin.parametro.store           | App\Http\Controllers\Admin\ParametroController@store                  |            |
|        | GET|HEAD | admin/parametro/{parametro}                        | admin.parametro.show            | App\Http\Controllers\Admin\ParametroController@show                   |            |
|        | GET|HEAD | admin/parametro/{parametro}/edit                   | admin.parametro.edit            | App\Http\Controllers\Admin\ParametroController@edit                   |            |
|        | PUT      | admin/parametro/{parametro}                        | admin.parametro.update          | App\Http\Controllers\Admin\ParametroController@update                 |            |
|        | PATCH    | admin/parametro/{parametro}                        |                                 | App\Http\Controllers\Admin\ParametroController@update                 |            |
|        | DELETE   | admin/parametro/{parametro}                        | admin.parametro.destroy         | App\Http\Controllers\Admin\ParametroController@destroy                |            |
+--------+----------+----------------------------------------------------+---------------------------------+-----------------------------------------------------------------------+------------+
bashy's avatar

It's best to set your document root to the public folder and not use htaccess to do it for you.

rgiaviti's avatar

@bestmomo, I checked mod_rewrite and it is enabled. From httpd.conf:

LoadModule rewrite_module modules/mod_rewrite.so

Same problem with alternate .htaccess. For example ,this URL works: http://localhost/app/index.php/admin/usuario and this doesn't http://localhost/app/admin/usuario.

Just one more thing:

<Directory "/opt/lampp/apache2/htdocs">
    Options Indexes FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

@bashy, yes, I know, but my app is still under development and I am migrating my app to L5 and I am stuck on this issue.

bashy's avatar

Not sure why that's a reason not to set it properly... I set mine locally with it pointed to the public directory. You will find there's a lot of messing about when you don't set it properly.

rgiaviti's avatar

@bashy, can I do this with Alias?

Alias /app "/opt/lampp/htdocs/app/public"

If yes, I just do it and same problem. :(

bashy's avatar

Not an alias. Make a new vhost for the site.

rgiaviti's avatar

Created a new vhost, removed the alias and same problem with index.php and without index.php.

rgiaviti's avatar
rgiaviti
OP
Best Answer
Level 1

Problem solved!

Well, I don't know the root of the problem yet, but I create a fresh project using composer:

composer create-project laravel/laravel --prefer-dist

And I started copying file by file of my project to the new project. At the end, voilá, It worked! Probably I had done something wrong when I was migrating the entire project to L5. Anyway, now it's working. Thank you!

ola's avatar

in your route file, don't put '.index'

moshie's avatar

I have recently installed A fresh version of L5 using homestead and have crossed the error

"NotFoundHttpException in RouteCollection.php line 145" 

Fairly new here so unsure of what would help to debug the issue? :/

UPDATE: figured it out turns out you need to run "vagrant provision" or apply the "--provision" flag for it to work -.-

1 like
u843867's avatar

I was having the same error until I realised I'd earlier cached ( php artisan route:cache) the routes file and when I added a new route forgot to re-cache (or clear the cache - php artisan route:clear)

marcim.bernardes's avatar

Same problem here, fix it changing the route position in 'routes' file:

Route::resource('comments', 'CommentsController');
Route::resource('channels', 'ChannelsController');

to:

Route::resource('channels', 'ChannelsController');
Route::resource('comments', 'CommentsController');

then running artisan commands: clear-compiled, cache:clear, route:clear and finally composer dumpautoload

mensah33's avatar

I am a novice and still learning about Laravel 5. I am having issue viewing my index pages but the default home that comes with Laravel install works fine. I am using route resource but index page works if I point to a method like (Route::get('/equipment.inex', ['as' => 'home', 'uses' => 'equipmentController@index']);). I have watched the route annotations lesson and still could not figure out. Your help would be much appreciated. Here my github link: https://github.com/nnoel2626/MTS-App. mensah33@gmail.com

doguhan's avatar

This problem: ///httdocs/ExamTurkey this folder struct route error... Folder name: //httdocs/examturkey

Nick385's avatar

@rgiaviti Use this next time saves a lot of time :P

serve output.app /home/vagrant/Code/Output/public

Please or to participate in this conversation.