我在https://s3.amazonaws.com/mysite/sitemaps/sitemap1.xml.gz
上托管了www.mysite.com的站点地图是否可以配置Rails(路由,控制器等)以在www.mysite.com/sitemap1.xml.gz下呈现文件sitemap1.xml?
感谢。
聚苯乙烯。站点地图在AWS下的原因是: https://github.com/kjvarga/sitemap_generator/wiki/Generate-Sitemaps-on-read-only-filesystems-like-Heroku
答案 0 :(得分:3)
基于https://github.com/kjvarga/sitemap_generator/issues/173
我正在尝试这个...
在routes.rb
get 'sitemap(:id).:format.:compression' => 'sitemap#show'
sitemap_controller.rb
中的
class SitemapController < ApplicationController
def show
data = open("http://{ENV['AWS_BUCKET_PROD']}.s3.amazonaws.com/sitemaps/sitemap#{params[:id]}.xml.gz")
send_data data.read, :type => data.content_type
end
end
还要确保站点地图(索引)文件包含指向您站点上的其他站点地图文件(sitemap1,sitemap2 ...)的链接,而不是亚马逊。
答案 1 :(得分:0)
据我了解,您正在部署到只读文件系统,例如Heroku。
如果是这样,以下是一些有用的文章:
答案 2 :(得分:-1)
创建一个控制器,该控制器将重定向到Amazon S3文件位置并为其创建匹配路由。
routes.rb中:
match 'sitemap1.xml.gz' => 'site_map#redirect'
site_map_controller.b:
class SiteMapController < ApplicationController
def redirect
redirect_to 'https://s3.amazonaws.com/mysite/sitemaps/sitemap1.xml.gz'
end
end