我只是得到一个与 rails gem一起使用的站点地图,并且在生产中生成站点地图时遇到了麻烦。
运行 rake 命令:rake sitemap:refresh
在开发中创建sitemap.xml.gz
公用文件夹中的文件。我导航到localhost:3000/sitemap.xml.gz
并让它下载压缩文件。
当我在生产中运行它时(在 Digital Ocean VM 上使用 Dokku 的 Heroku 类命令行),我得到:
+ sitemap.xml.gz 6 links / 450 Bytes
Sitemap stats: 6 links / 1 sitemaps / 0m00s
Pinging with URL 'https://www.myapp.com/sitemap.xml.gz':
Successful ping of Google
Successful ping of Bing
看起来文件已经创建,所以我导航到www.myapp.com/sitemap.xml.gz
并得到 404 响应。
服务器说:
ActionController::RoutingError (No route matches [GET] "/sitemap.xml.gz"):
看起来这个请求在应该由 Nginx 提供服务时遇到了 Rails 堆栈。我刚刚检查了文件是否存在:
FileTest.exists?("public/sitemap.xml.gz")
它返回false
,因此看起来站点地图实际上并未保存在文件中。我的文件系统现在是否有可能是只读的?我怎么能测试呢?