作为rails的初学者,由于其只读限制,我发现在Heroku上生成站点地图非常令人生畏。但是,站点地图是我网站的基础,因为它的成功基于SEO。
我已经尝试过dynamic_sitemaps gem,但很快就删除了它,因为我意识到它没有heroku使用的文档。然后我使用了sitemap_generator gem,它使用了几个宝石和外部平台(如Amazon S3)覆盖了heroku集成。然而问题是,作为一个初学者,我遇到了问题并且很难找到它们。
是否有一个解决方案我可以轻松生成站点地图以获得一致的内容,例如heroku平台上的博客帖子?我真的想要起床并运行,如果我必须使用我已经尝试过的方法,可能需要一段时间来配置。
谢谢!
答案 0 :(得分:0)
已经看过Dynamic Site Maps Gem 这个设置非常简单只需阅读Github中的读取内容,了解更多功能,您还可以查看Site Map Generator gem
祝你好运
答案 1 :(得分:0)
试试这个
控制器
class SitemapController < ApplicationController
layout nil
def index
@static_pages = [jobs_url, advertising_url, join_url]
@offers = Offer.all
respond_to do |format|
format.xml
end
end
end
查看
xml.instruct!
xml.urlset(
) do
@static_pages.each do |page|
xml.url do
xml.loc "#{page}"
xml.changefreq("monthly")
end
end
@offers.each do |offer|
xml.url do
xml.loc
xml.changefreq("daily")
end
end
end
路线
get 'sitemap.xml', :to => 'sitemap#index', :defaults => { :format => 'xml' }
答案 2 :(得分:0)
我发现了一个小技巧,可以动态生成站点地图文件,但可以将其保留以供以后在 Heroku 上调用。
它适用于小型\中型项目,如果您有一个大型\大型项目,并且数千个页面不断变化,请考虑使用S3存储站点地图文件。
步骤如下:
按照https://github.com/kjvarga/sitemap_generator
的说明使用sitemap_generator
宝石
在bundle
之后,运行rake sitemap:install
,它将为您创建一个 config / sitemap.rb 文件
编辑 config / sitemap.rb 文件,如下所示
SitemapGenerator::Sitemap.default_host = [your host name goes here]
SitemapGenerator::Sitemap.public_path = File.join(Rails.root, 'tmp').to_s
SitemapGenerator::Sitemap.compress = false
SitemapGenerator::Sitemap.create do
[all your site pages add commands goes here]
end
"#{ENV['HOST_PROTOCOL']}://#{ENV['HOST_NAME']}"
(当然还要添加适当的环境变量),以便您可以在不同的环境中进行更改。创建站点地图控制器文件- app / controllers / sitemap_controller.rb
编辑站点地图控制器文件,如下所示
require 'rake'
class SitemapController < ApplicationController
def index
file_name = File.join(Rails.root, 'tmp', 'sitemap.xml').to_s
unless File.exist?(file_name)
Rails.application.load_tasks
Rake::Task['sitemap:refresh:no_ping'].invoke
end
# it's better to be safe than sorry
if File.exist?(file_name)
respond_to do |format|
format.xml { render file: file_name }
end
else
render file: 'public/404.html', status: :not_found, layout: false
end
end
end
resources :sitemap, only: %i[index], constraints: ->(req) { req.format == :xml }
享受?