1

我正在使用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. 调用git add两个本地生成的 xml 文件,将它们推送到 Heroku,然后调用heroku run rake sitemap:refresh --app myapp-prod以使用我的生产 URL 更新本地生成的 URL。但是文件没有被刷新,它与本地生成的文件完全相同,即使返回与上面相同的消息。
  2. 将站点地图生成为自定义路径,例如 public/shared/。但是访问时错误仍然存​​在https://myapp.com/shared/sitemap1.xml.gz
  3. 所有可能的和不可能的 URL 组合,例如https://myapp.com/public/sitemap1.xml.gz(当然,这永远不会起作用,但想不遗余力)

关于什么可能导致这种行为以及站点地图可能存储在哪里的任何想法?

4

2 回答 2

4

经过进一步的研究,我终于弄清楚了问题所在。

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

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

最终对我有用的解决方案是将站点地图生成到我的 Amazon S3 存储中,如此所述。

于 2012-10-18T16:26:28.333 回答
0

您对将站点地图上传到 Google Web Master 工具做了什么,因为默认情况下它希望站点地图位于http://www.yoursite.com/ .....

我的站点地图托管在 Amazon S3 中,它在我的 robots.txt 文件中被引用,但我需要告诉 Google Web Master Tools 在哪里可以找到它。

有什么建议吗?

于 2013-12-07T11:52:57.680 回答