Ruby on Rails - Статическая страница как стартовая страница
Я разрабатываю приложение в RoR, которое имеет статические и динамические части. Статическая часть помещается в общую папку / приложение. Теперь, если у меня есть index.html в моей общедоступной папке, я не смогу использовать маршруты, настроенные в моем route.rb. Конфигурации по умолчанию, такие как map.connect /:controller/:action, не будут использоваться, если у меня есть индекс.html. Поэтому я удалил индекс HTML.
Теперь у меня есть статическая страница startpage.html в моей папке public /, которая должна быть начальной страницей приложения. И у меня есть ссылки в нем для других статических / динамических страниц.
Приложение RoR размещено в Apache, и я попытался настроить конфигурацию виртуального хоста, добавив параметр DirectoryIndex, чтобы при поступлении запроса на сайт он направлял его в startpage.html, но все равно он переводил меня на контроллер по умолчанию, который я указал в ways.rb с map.root
Я не хочу добавлять фиктивный контроллер и действие, а также создавать представление с начальной страницей и настраивать route.rb, чтобы использовать его в качестве корневого. Что я хочу сделать здесь
По сути, startpage.html должен быть моей первой страницей в приложении, которая была статической страницей из public / folder. Затем будут ссылки на другие страницы и контроллеры / действия
Здесь я не могу apache для перенаправления на html-страницу вместо передачи управления в приложение rails. Перечень каталогов также включен с помощью индексов параметров, но без изменений.
Любые указатели кто-нибудь?
2 ответа
Теперь, если у меня есть index.html в моей общедоступной папке, я не смогу использовать маршруты, настроенные в моем rout.rb.
Это неверно Решение вашей проблемы - переименовать startpage.html
в index.html
, который будет вызывать запросы на /
обслуживаться index.html
и любые запросы на /:controller/:action
будет передан в Rails Routing engine.
Apache сначала будет обслуживать все, что может найти в public
каталог. Если он недоступен, он передает запрос в Rails (так работает кеширование страниц).
С index.html
на месте, вам не нужно map.root
, так как он никогда не будет запрошен (помните, Apache служит /
с index.html
). И вам не нужны никакие специальные директивы.
Вы можете переписать URL из index.html в свою startpage.html.
RewriteRule /index.html /startpage.html