假设我废弃了旧的wordpress安装,并将以下目录放入/ public(sinatra应用程序)
2006 2008 2010 category my-work
2007 2009 archives tag
年份目录以这种格式下载:
/年/月/日/冠军的员额/
问题1: 我可以通过/year/month/day/title-of-post/index.html加载页面,但我希望能够加载/年/月/日/标题帖/加载页面而无需加载页面最后输入index.html。
问题2:
我希望能够输入/存档并获得上面提到的每个子目录的<li><a href="path-to-archived-post">post title</a></li>
。我该怎么做?
答案 0 :(得分:1)
您可以使用一些选项让index.html在您的公用文件夹中运行。最快的选择是让您的负载平衡服务器(例如Nginx或Apache)提供静态文件。 Nginx和Apache基本上都是开箱即用的。
另一种方法是从Sinatra路线手动读取和发送文件。你会以这种方式获得更多控制权,但会失去一点速度并使用更多内存。你可以这样做:
get "/:year/:month/:day/:title" do |*path|
File.read(File.join(settings.public, path, "index.html"))
end
您可以通过使用Dir类进行通配来获取帖子列表:
get "/archive" do
@posts = Dir["#{settings.public}/**/index.html"].map do |post|
File.dirname(post).sub(settings.public, "")
end
haml :archive
end
答案 1 :(得分:0)
1
get "/:year/:month/:day/:title" do
# render the post
end
2
get "/archive" do
years = Dir.entries(PUBLIC_DIR)
# cycle through years and render links
end