Creo que esto es sólo un problema porque Sinatra/rack no tiene el concepto de un archivo predeterminado para servir si sólo ir a /
. En un servidor web como Apache o Nginx, esto se soluciona por usted y normalmente está predeterminado en index.html index.htm
(si existe, se publicará cuando vaya a un directorio sin nombre de archivo real al final).
Cuando todos dicen que esto está integrado en Passenger, creo que realmente quieren decir que está integrado en Apache/Nginx. Apache/Nginx verificará si el archivo estático existe y lo servirá si lo hace, la solicitud nunca llegará a Rack, lo cual es impresionante para el rendimiento.
No me gustaría configurar un redireccionamiento a la página 404 ya que este tipo de violación a la idea de HTTP: debe haber un punto final para todo lo que el punto final debe devolver el verdadero estado de ese punto final. Lo que significa que si va al /asdf
, quiere el servidor web para informar un 404 porque eso es lo que realmente está sucediendo. Si realiza un redireccionamiento, ahora su sitio dice "Solía tener algo aquí, pero se movió" y luego la página a la que lo redirecciona, a pesar de que dice 404 en el texto de la página, en realidad lo informa la web. server as a 200, que significa "¡todo está bien en esta página!"
votación para la primera solución. también si usas pasajeros, esto simplemente funciona. no se requiere enrutamiento ni redirección. – rubiii
@rubii Creo que valdría la pena poner al pasajero en su propia respuesta. Parece una respuesta más correcta que la mía –
, creo que tu respuesta está perfectamente bien. Apostaría que JP no está usando pasajero. pero publicaré una respuesta para todos los demás. – rubiii