Je pense que ce n'est un problème parce que Sinatra/Rack n'a pas le concept d'un fichier par défaut pour servir si vous allez juste /
. Dans un serveur web comme Apache ou Nginx ceci est pris en charge par vous et index.html index.htm
par défaut (si l'un existe, il sera servi lorsque vous allez dans un répertoire sans nom de fichier à la fin).
Quand tout le monde dit que cela est intégré dans Passenger, je pense qu'ils veulent vraiment dire qu'il est intégré à Apache/Nginx. Apache/Nginx va vérifier si le fichier statique existe et le servir si c'est le cas, la requête ne sera jamais accessible à Rack, ce qui est génial pour les performances. Je ne voudrais pas mettre en place une redirection vers la page 404 car cela enfreint l'idée de HTTP: il devrait y avoir un point de terminaison pour tout ce point final devrait renvoyer l'état vrai de ce point de terminaison. Ce qui signifie que si vous allez à /asdf
vous voulez le serveur web pour signaler un 404 parce que c'est ce qui se passe réellement. Si vous faites une redirection, maintenant votre site dit: «J'avais quelque chose ici, mais il a déménagé» et la page vers laquelle il vous redirige, même si elle indique 404 dans le texte sur la page, est en fait signalée par le web serveur en 200, ce qui signifie "tout va bien avec cette page!"
vote pour la première solution. aussi si vous utilisez le passager, cela fonctionne simplement. aucun routage requis ou redirection. – rubiii
@rubii Je pense qu'il vaudrait la peine de mettre le passager dans sa propre réponse. Cela semble être une réponse plus correcte que la mienne –
Je pense que votre réponse est parfaitement bien. Je parie que JP n'utilise pas de passager. mais je posterai une réponse pour tout le monde. – rubiii