Я думаю, что это только проблема, потому что у Sinatra / Rack нет концепции файла по умолчанию для обслуживания, если вы просто перейдете на /
. В веб-сервере, таком как Apache или Nginx, об этом позаботятся за вас, и обычно по умолчанию он равен index.html index.htm
(если он существует, он будет обслуживаться при переходе в каталог без действительного имени файла в конце).
Когда все говорят, что это встроено в Passenger, я думаю, они действительно имеют в виду, что оно встроено в Apache / Nginx. Apache / Nginx проверит, существует ли статический файл, и обработает его, если он существует, запрос никогда не попадет в Rack, что является потрясающим по производительности.
Я бы не хотел устанавливать перенаправление на страницу 404, поскольку этот вид нарушает саму идею HTTP: должна быть одна конечная точка для всего, что конечная точка должна возвращать истинное состояние этой конечной точки. Это означает, что если вы перейдете на /asdf
, вы захотите , чтобы веб-сервер сообщил 404, потому что это именно то, что происходит на самом деле. Если вы делаете переадресацию, то теперь ваш сайт говорит: «Раньше у меня что-то было здесь, но оно переместилось», а затем страница, на которую он перенаправляет вас, даже если в тексте на странице указано 404, фактически сообщается в Интернете сервер как 200, что означает "все в порядке с этой страницей!"