2013-08-15 2 views
5

Alle meine registrierten Routen funktionieren. Sie zeigen die Ansicht an, aber bei jeder Anfrage wird eine NotFoundHttpException in meiner Protokolldatei angezeigt.Warum protokolliert Laravel immer noch eine NotFoundHttpException, während alle Routen funktionieren?

Ich benutze NGINX. Könnte es meine NGINX-Konfiguration sein?

Der Fehler, der bei jeder Anfrage (obwohl die Ansicht zeigt nach oben) protokolliert:

log.ERROR: exception 'Symfony\Component\HttpKernel\Exception\NotFoundHttpException' in /usr/share/nginx/www/example-staging/releases/20130815024541/vendor/laravel/framework/src/Illuminate/Routing/Router.php:1429 
Stack trace: 
#0 /usr/share/nginx/www/example-staging/releases/20130815024541/vendor/laravel/framework/src/Illuminate/Routing/Router.php(1050): Illuminate\Routing\Router->handleRoutingException(Object(Symfony\Component\Routing\Exception\ResourceNotFoundException)) 
#1 /usr/share/nginx/www/example-staging/releases/20130815024541/vendor/laravel/framework/src/Illuminate/Routing/Router.php(1014): Illuminate\Routing\Router->findRoute(Object(Illuminate\Http\Request)) 
#2 /usr/share/nginx/www/example-staging/releases/20130815024541/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(530): Illuminate\Routing\Router->dispatch(Object(Illuminate\Http\Request)) 
#3 /usr/share/nginx/www/example-staging/releases/20130815024541/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(506): Illuminate\Foundation\Application->dispatch(Object(Illuminate\Http\Request)) 
#4 /usr/share/nginx/www/example-staging/releases/20130815024541/content/index.php(49): Illuminate\Foundation\Application->run() 
#5 {main} 

NGINX Config:

# Redirect www. 
server { 
    listen 80; 
    server_name www.example.com; 
    rewrite ^(.*) http://example.com$1 permanent; 
} 

server { 
    listen 80; 
    server_name example.com; 

    access_log /var/log/nginx/example.com/access.log; 
    error_log /var/log/nginx/example.com/error.log; 
    rewrite_log on; 

    root /usr/share/nginx/www/example/current/content; 
    index index.php; 

    location/{ 
     try_files $uri $uri/ /index.php?$query_string; 
    } 

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 
    location ~* \.php$ { 
     # Server PHP config. 
     fastcgi_pass     unix:/var/run/php5-fpm.sock; 
     fastcgi_index     index.php; 
     fastcgi_split_path_info   ^(.+\.php)(.*)$; 

     # Typical vars in here, nothing interesting. 
     include       /etc/nginx/fastcgi_params; 
     fastcgi_param     SCRIPT_FILENAME $document_root$fastcgi_script_name; 
    } 

    if (!-d $request_filename) { 
     rewrite ^/(.+)/$ /$1 permanent; 
    } 

    location ~ /\.ht { 
     # (deny .htaccess) 
     deny all; 
    } 
} 
+3

Könnte es das '/ favicon.ico' sein? Einige Webbrowser fordern dies an, auch wenn sie nicht angegeben sind. Wie lautet die angeforderte Route, wie im access.log angezeigt? –

+0

Wow ... du hattest recht. Es war das Favicon. Vielen Dank. – Justin

Antwort

10

Das hatte nichts zu mit NGINX Konfig.

Der Pfad zum Favicon war falsch. Ich nahm an, dass alle Ressourcen gefunden wurden, weil im Web-Inspektor alles im Status OK oder 304 war. Ich schätze, der Inspektor zeigt das Favicon nicht im Netzwerk-Tab an.

Als Rubens Mariuzzo erwähnt, ergab die access.log, dass die Favicon-Status war 500.

Als Seite beachten, wenn Sie Laravel möchten Protokollierung 404s/Ressourcen nicht als Fehler in Protokolldateien gefunden, Sie zu stoppen kann Ihre global.php Datei wie folgt bearbeiten.

App::error(function(Exception $exception, $code) 
{ 
    // Don't log 404s 
    if ($exception instanceof Symfony\Component\HttpKernel\Exception\NotFoundHttpException) { 
     return; 
    } 

    Log::error($exception); 
}); 
+1

Innerhalb Ihrer nginx-Konfiguration können Sie im 'server'-Block Folgendes hinzufügen:' location = /favicon.ico {log_not_found off; access_log aus; } 'und/oder' location = /robots.txt {access_log off; log_not_found off; } ' – fideloper

Verwandte Themen