在Middleman的config.rb中重定向文件夹

时间:2014-01-27 18:54:17

标签: ruby-on-rails ruby middleman

我正在使用静态站点生成器Middleman来构建我的站点。我们目前有通过config.rb代理的目标网页:

# landing page template directories to redirect
landingpage_seo_templates = Dir['source/landingpages/seo/*.erb']

# point all landingpage/seo templates to the root
landingpage_seo_templates.map! do |tpl_name|
  tpl_name = File.basename(tpl_name).gsub(/.erb$/, '')
  proxy "/#{tpl_name}/index.html", "/landingpages/seo/#{tpl_name}.html", :ignore => true
end

这会在构建网站时将/landingpages/seo/{filename}.erb目录中的所有文件指向/{filename}.erb。但是,这不适用于子文件夹。

我的问题是如何修改此脚本以呈现子文件夹。例如,我希望/landingpages/seo/foo/{filename}.erb中的文件呈现给/foo/{filename}.erb

我知道如何通过.htaccess执行此操作,但我想通过config.rb了解如何执行此操作。

提前谢谢你。

1 个答案:

答案 0 :(得分:1)

如果您修改文件模式......

landingpage_seo_templates = Dir['source/landingpages/seo/**/*.erb']

...您应该在erb树中获取所有seo个模板。

然后你需要修改tpl_name计算(可能有一个更聪明/更短的方法):

# point all landingpage/seo templates to the root
landingpage_seo_templates.map! do |tpl_name|
  tpl_name = tpl_name.gsub(/.erb$/, '')
  tpl_name = tpl_name.gsub(/source\/landingpages\/seo\//, '')
  proxy "/#{tpl_name}/index.html", "/landingpages/seo/#{tpl_name}.html", :ignore => true
end