rails - sinatra ruby port




Маршрутизация статической страницы в Sinatra(Ruby) (4)

Вероятно, лучший ответ в конце концов наступит, пока это не мой выстрел в него.

Если это не то, что вы хотите:

get '/' do
  redirect '/index.html'
end

Вы можете сделать что-то вроде этого:

get '/' do
  File.new('public/index.html').readlines
end

Я бы пошел с первым, хотя, не уверен, почему вы хотите избежать этого перенаправления

Вы можете обслуживать статические файлы с помощью Sinatra, размещая их public/ (по умолчанию). В настоящее время у меня есть index.html , но как я могу сделать корневую точку для этого файла без необходимости его разбора в качестве шаблона ?

Чтобы быть ясным, я могу успешно получить доступ к /index.html , и я хотел бы маршрутизировать / быть одним и тем же статическим файлом, но без перенаправления. есть идеи как это сделать?


использование пассажира, похоже, работает прямо из коробки. имеющий файл index.html в общедоступном каталоге, и никакая маршрутизация не вызывает index.html при доступе к корневому URL.


Я думаю, что это только проблема, потому что у Sinatra / Rack нет концепции файла по умолчанию для обслуживания, если вы просто перейдете в / . В веб-сервере, таком как Apache или Nginx, об этом заботятся и обычно по умолчанию используется index.html index.htm (если он существует, он будет обслуживаться при переходе в каталог без фактического имени файла в конце).

Когда все говорят, что это встроено в Пассажира, я думаю, что они действительно означают, что он встроен в Apache / Nginx. Apache / Nginx будет проверять, существует ли статический файл и обслуживать его, запрос никогда не попадет на стойку, что является отличным для производительности.

Я бы не хотел настраивать перенаправление на страницу 404, так как это нарушает всю идею HTTP: должна быть одна конечная точка для всего, что конечная точка должна вернуть истинное состояние этой конечной точки. Это означает, что если вы перейдете в /asdf вы хотите, чтобы веб-сервер сообщал о 404, потому что это то, что происходит на самом деле. Если вы делаете переадресацию, теперь ваш сайт говорит: «У меня было что-то здесь, но оно перемещалось», а затем перенаправляемая вами страница, даже если она говорит 404 в тексте на странице, фактически сообщается в Интернете сервер как 200, что означает «все в порядке с этой страницей!»






sinatra