Ruby on Rails - Статическая страница как стартовая страница - PullRequest
1 голос
/ 31 марта 2010

Я занимаюсь разработкой приложения в RoR, в котором есть статические и динамические части. Статическая часть помещается в общую папку / приложение. Теперь, если у меня есть index.html в моей общедоступной папке, я не смогу использовать маршруты, настроенные в моем route.rb. Конфигурации по умолчанию, такие как map.connect /: controller /: action , не будут можно использовать, если у меня есть index.html. Поэтому я удалил индекс HTML.

Теперь у меня есть статическая страница startpage.html в моей общей папке / папке, которая должна быть начальной страницей приложения. И у меня есть ссылки в нем для других статических / динамических страниц.

Приложение RoR размещено в apache, и я попытался настроить конфигурацию виртуального хоста, добавив параметр DirectoryIndex, чтобы при поступлении любого запроса на сайт он направлял его в startpage.html, но все равно переходил на контроллер по умолчанию, который я указал в rout.rb с map.root

Я не хочу добавлять фиктивный контроллер и действие, а также создавать представление с начальной страницей и настраивать route.rb, чтобы использовать его в качестве корневого. То, что я хочу сделать здесь, это

По сути, startpage.html должен быть моей первой страницей в приложении, которая была статической страницей из папки public / Затем будут ссылки на другие страницы и контроллеры / действия

Здесь я не могу apache для перенаправления на html-страницу вместо передачи управления приложению rails. Список каталогов также включается с помощью Индексы опций , но без изменений.

Есть какие-нибудь указатели?

Ответы [ 2 ]

6 голосов
/ 31 марта 2010

Теперь, если у меня есть index.html в моей общей папке, я не смогу использовать маршруты, настроенные в моем rout.rb.

Это неверно. Решение вашей проблемы - переименовать startpage.html в index.html, что приведет к тому, что запросы на / будут обслуживаться index.html, а любые запросы на /:controller/:action будут переданы в механизм маршрутизации Rails. *

Apache сначала будет обслуживать все, что может найти в каталоге public. Если он недоступен, он передает запрос в Rails (так работает кеширование страниц).

С index.html вам не нужен map.root, так как он никогда не будет запрошен (помните, Apache обслуживает / с index.html). И вам не нужны никакие специальные директивы.

0 голосов
/ 31 марта 2010

Вы можете перезаписать URL из index.html на свою startpage.html

RewriteRule /index.html /startpage.html
...