2013-08-15 16 views
5

Tutti i miei percorsi registrati funzionano. Visualizzano la vista, tuttavia su ogni richiesta viene visualizzata una NotFoundHttpException nel mio file di registro.Perché Laravel registra ancora una NotFoundHttpException mentre tutte le rotte funzionano?

Sto usando NGINX. Potrebbe essere la mia configurazione NGINX?

L'errore che si registra a ogni richiesta (anche se la vista si presenta):

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

Potrebbe essere il/favicon.ico' '? Alcuni browser Web lo richiedono anche se non specificato. Qual è l'itinerario richiesto come mostrato in access.log? –

+0

Wow ... avevi ragione. Era la favicon. Grazie. – Justin

risposta

10

Questo non aveva niente a con Nginx config.

Il percorso della favicon non era corretto. Presuppone che tutte le risorse siano state trovate perché nel web inspector tutto era OK o 304. Immagino che l'ispettore non mostri la favicon nella scheda di rete.

Come Rubens Mariuzzo accennato, l'access.log ha rivelato che la favicon era stato di 500.

Come nota a margine, se si desidera laravel per fermare 404s di registrazione/Resource Not Found come errori nei file di registro, è puoi modificare il tuo file global.php come il seguente.

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

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

All'interno della configurazione di nginx, all'interno del blocco 'server', considera l'aggiunta di:' location = /favicon.ico {log_not_found off; access_log off; } 'e/o' location = /robots.txt {access_log off; log_not_found off; } ' – fideloper

Problemi correlati