如何在Heroku上生成站点地图?

3
我曾看到一些关于在Heroku上生成站点地图的旧帖子...其中的挑战是需要将其存储在S3上,并配置它以使站点地图合法,因为它是托管在其他地方的。我没有看到任何明确的东西,但有一些对话和建议补丁。是否有即插即用的解决方案可以很好地与Heroku配合使用?
4个回答

10

根据https://github.com/kjvarga/sitemap_generator的文章:

你应该将网站地图索引文件的URL添加到public/robots.txt中,以帮助搜索引擎找到您的站点地图。该URL应该是指向站点地图索引的完整URL。例如:

Sitemap: http://www.example.com/sitemap_index.xml.gz

如果您正在使用Google Webmaster工具,该工具只允许您指定主机的URL地址,也许您可以创建一个控制器和操作,只需重定向到S3上的sitemap.xml,然后在Webmaster工具中指定该URL。 http://www.billrowell.com/2012/02/01/create-an-xml-sitemap-on-heroku-via-amazon-s3/

如果您想要上传至S3,则可以参考以下内容: https://github.com/kjvarga/sitemap_generator/wiki/Generate-Sitemaps-on-read-only-filesystems-like-Heroku


2
你也可以在路由中配置重定向,这样就不需要添加控制器了:get '/sitemap.xml.gz', to: redirect('https://your-bucket.s3.amazonaws.com/sitemaps/sitemap.xml.gz') - Daniel
我可以验证这个方法对我有效。 - chromaloop

1

我正在等待 sitemap_generator 的 s3 版本,如果它能够实现它所说的,那就可以了。


1

我之前是通过名为sitemap.xml的路由到一个控制器来动态构建站点地图,而不是爬取网站并有一个硬编码的sitemap.xml必须存储在某个地方。我想这取决于您的应用程序以及URL更改的频率。


0

我的英语不太好。 但是我可以向您解释我的代码。 XML 是使用 'xmlbuilder' 创建的。

CreateXmlFile(request, response, next, function(request, response, next, xml){
      response.type('text/xml');
      response.send(xml);
      if(typeof next == "function"){
        next();
      }
    });

抱歉,你要翻译韩文到英文吗?谷歌翻译很不错 :)。 - garam hyeon
XML文件本身并不是最重要的,重要的是当搜索引擎访问该地址时能够显示XML文档。因此,实际文件并不是必需的。 - garam hyeon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接