【问题标题】:Matching all .html files to High Voltage in Rails将所有 .html 文件与 Rails 中的高压匹配
【发布时间】:2012-09-28 03:53:02
【问题描述】:
如何在 Rails 中将所有.html 文件与High Voltage 的控制器匹配,以便任何带有.html 的url 在我的视图目录中打开相应的pages/<page>.html.erb 文件?当然,我可以使用 High Voltage 的 page_path 命名路由来引用它?
【问题讨论】:
标签:
ruby-on-rails
ruby-on-rails-3
routes
ruby-on-rails-3.2
static-html
【解决方案1】:
我认为这是不可能的,或者至少是微不足道的。 URL 的“后缀”部分映射到请求的格式,例如 /pages/document.html、/pages/document.json、/pages/document.xml、/pages/document.csv 等。是 Rails 路由的基础,而 .html 是默认格式,因此 /pages/document 默认会返回 HTML。可能可以创建如下路线:
match '*.html' => 'high_voltage/pages#show', as: :static
不过我还没有测试过。
如果你把匹配放在底部,可能会出现这样的情况,即使传入的 url 上面有 .html,它也会匹配之前的其他内容。相反,如果你把它放在顶部,它可能会匹配所有没有后缀的东西。应该很容易让您测试它。
我的高压路线:
get '/:id' => 'high_voltage/pages#show', as: :static
在我的路线的底部,就在根 url 之前,所以它基本上是全部。只要我的静态 html 文件路径与我的 RESTful 路由不同,它就可以正常工作。
否则,如果这些静态 URL 可以接受重定向(永久),您可以将匹配项放在上游 HTTP 服务器中,如 nginx 或 apache,并将其重定向到已知的高压路径,如 /pages。