1

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

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

RoR 应用程序托管在 apache 中,我尝试通过添加 DirectoryIndex 参数来配置虚拟主机配置,这样当网站收到请求时,它会将其定向到 startpage.html 但仍将我带到默认控制器我已经在 routes.rb 中指定了map.root

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

基本上 startpage.html 应该是我在应用程序中的第一页,作为来自 public/ 文件夹的静态页面。然后,这将具有指向其他页面和控制器/操作的链接

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

任何指针任何人?

4

2 回答 2

6

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

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

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

有了index.html适当的位置,您就不需要map.root,因为它永远不会被请求(请记住,Apache 服务/index.html)。而且您也不需要任何特殊指令。

于 2010-03-31T10:47:16.370 回答
0

您可以从 index.html 到您的 startpage.html 进行 URL 重写

RewriteRule /index.html /startpage.html
于 2010-03-31T10:21:11.793 回答