我正在开发一款具有静态和动态部分的应用程序。静态部分放置在应用程序的公共/文件夹中。现在,如果我的公共文件夹中有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应用程序。目录列表也可以使用选项索引启用,但仍然没有变化。
有人指点吗?
答案 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