Sitemap_generator在未知URL处生成站点地图

时间:2012-10-16 09:59:51

标签: ruby-on-rails ruby-on-rails-3 heroku sitemap

我正在使用sitemap_generator gem为我的网站制作站点地图。

在本地制作网站地图效果很好,我可以在http://localhost:3000/sitemap1.xml.gz访问网站地图。

部署到Heroku并运行

之后
heroku run rake sitemap:refresh --app myapp-prod

我明白了:

In /app/public/
+ sitemap1.xml.gz                                        254 links /    4.74 KB
+ sitemap_index.xml.gz                                  1 sitemaps /  231 Bytes
Sitemap stats: 254 links / 1 sitemaps / 0m06s

到目前为止一切顺利 - 然而,当我尝试在https://myapp.com/sitemap1.xml.gz访问我的站点地图时,出现404错误。我已经尝试了以下方法来解决这个问题但没有一个有效:

  1. 为两个本地生成的xml文件调用git add,将它们推送到Heroku,然后调用heroku run rake sitemap:refresh --app myapp-prod以使用我的生产URL更新本地生成的URL。但是,文件没有刷新,它与本地生成的文件完全相同,即使返回了与上面相同的消息。
  2. 将站点地图生成为自定义路径,例如公共/共享/。但访问https://myapp.com/shared/sitemap1.xml.gz时错误仍然存​​在。
  3. 所有可能和不可能的网址组合,例如https://myapp.com/public/sitemap1.xml.gz(当然这些组合永远不会起作用,但我们不遗余力)
  4. 有关可能导致此行为的原因以及可能存储站点地图的任何想法?

2 个答案:

答案 0 :(得分:4)

经过深入研究后,我终于找到了问题所在。

由于Heroku使用只读文件系统,因此无法在public目录中生成站点地图。这在这里有更详细的解释:

https://devcenter.heroku.com/articles/dynos#ephemeral-filesystem

最终为我工作的解决方案是将网站地图生成到我的Amazon S3存储中,如here所述。

答案 1 :(得分:0)

您如何将站点地图上传到Google Web Master工具,因为默认情况下,它希望站点地图能够在http://www.yoursite.com/生效.....

我的网站地图在亚马逊S3中托管,并在我的robots.txt文件中引用,但我需要告诉Google Web Master Tools在哪里找到它。

有什么建议吗?