Credo che questo è solo un problema perché Sinatra/Rack non ha il concetto di un file di default per servire se si va a /
. In un server web come Apache o Nginx questo è gestito per te e di solito è impostato su index.html index.htm
(se esiste esiste che verrà reso disponibile quando si accede a una directory senza nome file effettivo alla fine).
Quando tutti dicono che questo è incorporato in Passenger, penso che in realtà significhi che sia incorporato in Apache/Nginx. Apache/Nginx controllerà se il file statico esiste e lo serve se lo fa, la richiesta non arriverà mai a Rack, il che è fantastico per le prestazioni.
Non vorrei impostare un reindirizzamento alla pagina 404 poiché questo tipo viola l'intera idea dell'HTTP: dovrebbe esserci un endpoint per tutto ciò che il punto finale dovrebbe restituire lo stato vero di quell'endpoint. Significa che se vai a /asdf
tu vuoi il webserver per segnalare un 404 perché è quello che sta effettivamente succedendo. Se esegui un reindirizzamento, ora il tuo sito sta dicendo "Avevo qualcosa qui, ma si è trasferito" e quindi la pagina a cui ti reindirizza, anche se dice 404 nel testo della pagina, viene effettivamente segnalata dal web server come 200, che significa "tutto va bene con questa pagina!"
fonte
2011-02-11 17:50:04
votare per la prima soluzione. anche se usi il passeggero, questo funziona. nessun instradamento richiesto o reindirizzamento. – rubiii
@rubii Penso che varrebbe la pena mettere il passeggero nella propria risposta. Mi sembra una risposta più corretta della mia. –
Penso che la tua risposta sia perfetta. scommetterei che JP non sta usando il passeggero. ma posterò una risposta per tutti gli altri. – rubiii