【发布时间】:2016-07-07 23:28:55
【问题描述】:
当我转到https://anthony-galli.s3.amazonaws.com/sitemaps/sitemap.xml.gz 时,如何查看我的站点地图的外观?相反,我遇到了:
This XML file does not appear to have any style information associated with it. The document tree is shown below.
<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>25B779FB11146233</RequestId>
<HostId>
94TdmdgzvdGCMVfKFZYL7Z3JASDFSa18N1YdUoMCtNa3qx6UHajPfMQSeFqfDmgYFHf
</HostId>
</Error>
当我运行时,站点地图看起来是正确构建的:
Anthony-Gallis-MacBook-Pro:blog galli01anthony$ heroku run rake sitemap:refresh --trace
WARNING: Toolbelt is currently updating
Running rake sitemap:refresh --trace on ⬢ anthony-galli... up, run.5920
** Invoke sitemap:refresh (first_time)
** Invoke sitemap:create (first_time)
** Invoke sitemap:require_environment (first_time)
** Execute sitemap:require_environment
** Invoke environment (first_time)
** Execute environment
** Execute sitemap:create
In '/app/public/sitemaps/':
+ sitemap.xml.gz 24 links / 982 Bytes
Sitemap stats: 24 links / 1 sitemaps / 0m00s
Pinging with URL 'http://www.anthonygalli.com/sitemap.xml.gz':
Successful ping of Google
Successful ping of Bing
** Execute sitemap:refresh
Pinging with URL 'http://www.anthonygalli.com/sitemap.xml.gz':
Successful ping of Google
Successful ping of Bing
routes.rb
get '/sitemap.xml.gz', to: redirect("https://#{ENV['AWS_BUCKET']}.s3.amazonaws.com/sitemaps/sitemap.xml.gz"), as: :sitemap
production.rb
config.paperclip_defaults = {
:storage => :s3,
:s3_credentials => {
:region => ENV['AWS_REGION'],
:bucket => ENV['AWS_BUCKET'],
:access_key_id => ENV['AWS_ACCESS_KEY_ID'],
:secret_access_key => ENV['AWS_SECRET_ACCESS_KEY']
}
}
config/sitemap.rb
SitemapGenerator::Sitemap.default_host = 'http://www.anthonygalli.com/'
SitemapGenerator::Sitemap.public_path = 'public/sitemaps/'
SitemapGenerator::Sitemap.create do
add posts_path, changefreq: 'daily'
Post.find_each do |post|
add post_path(post.slug), lastmod: post.updated_at
end
end
SitemapGenerator::Sitemap.ping_search_engines
lib/tasks/sitemap.rake
require 'aws'
desc 'Upload the sitemap files to S3'
task upload_to_s3: :environment do
puts 'Starting sitemap upload to S3...'
s3 = Aws::S3::Resource.new
bucket = s3.bucket(ENV['S3_BUCKET'])
Dir.entries(File.join(Rails.root, 'tmp', 'sitemaps')).each do |file_name|
next if %w(. .. .DS_Store).include? file_name
path = "sitemaps/#{file_name}"
file = File.join(Rails.root, 'tmp', 'sitemaps', file_name)
object = bucket.object(path)
object.upload_file(file)
puts "Saved #{file_name} to S3"
end
end
namespace :sitemap do
# ...
desc 'Create the sitemap, then upload it to S3 and ping the search engines'
task create_upload_and_ping: :environment do
Rake::Task["sitemap:create"].invoke
Rake::Task["sitemap:upload_to_s3"].invoke
SitemapGenerator::Sitemap.ping_search_engines('http://www.anthonygalli.com/sitemap.xml.gz')
end
end
我按照本教程进行操作:http://cookieshq.co.uk/posts/creating-a-sitemap-with-ruby-on-rails-and-upload-it-to-amazon-s3/
【问题讨论】:
-
您在 s3 存储桶中授予的权限可能有问题?
标签: ruby-on-rails ruby amazon-web-services amazon-s3 sitemap