Ruby on Rails - 静态页面作为起始页面

时间:2010-03-31 09:58:50

标签: ruby-on-rails apache2 routes directoryindex

我正在开发一款具有静态和动态部分的应用程序。静态部分放置在应用程序的公共/文件夹中。现在,如果我的公共文件夹中有index.html,那么我将无法使用我的routes.rb中配置的路由。 map.connect /:controller /:action 等默认配置不会如果我有一个index.html可以使用。所以我删除了索引html。

现在我的public /文件夹中有一个静态页面startpage.html,它必须是应用程序的起始页面。我在其中有其他静态/动态页面的链接。

RoR应用程序托管在apache中,我尝试通过添加DirectoryIndex参数来配置虚拟主机配置,这样当网站发出请求时,它会将它指向startpage.html,但它仍然需要我我在routes.rb中使用 map.root

指定的默认控制器

我不想添加虚拟控制器和操作,并创建一个具有startpage的视图,并配置routes.rb以将其用作root。我在这里要做的是

基本上,startpage.html应该是我在应用中的第一页,作为公共/文件夹中的静态页面。然后,这将包含指向其他页面和控制器/操作的链接

在这里,我无法将apache重定向到html页面,而不是将控件传递给rails应用程序。目录列表也可以使用选项索引启用,但仍然没有变化。

有人指点吗?

2 个答案:

答案 0 :(得分:6)

  

现在,如果我的公共文件夹中有index.html,那么我将无法使用routes.rb中配置的路由。

这是不正确的。您的问题的解决方案是将startpage.html重命名为index.html,这将导致/提供index.html的请求,并且/:controller/:action的任何请求都将传递给Rails路由引擎。

Apache将首先提供它在public目录中可以找到的任何内容。如果它不可用,那么它将请求传递给Rails(这是页面缓存的工作方式)。

如果index.html到位,则不需要map.root,因为它永远不会被请求(请记住,Apache使用/index.html提供服务)。而且您也不需要任何特殊指令。

答案 1 :(得分:0)

您可以将index.html重写为startpage.html

RewriteRule /index.html /startpage.html