maneira recomendada ou plugin para criar sitemaps do Google para ruby ??on rails aplicativo?
-
03-07-2019 - |
Pergunta
Eu fiz uma pesquisa rápida no Google e não vi nada super-grande para automatizar a criação e atualização do meu google mapa do site para o ruby ??on rails aplicativo. Alguma sugestão?
Solução
Eu adicionei um mapa do site dinâmico para um aplicativo de blog recentemente. Estes passos devem você começar.
Adicione esta rota para o fundo do seu arquivo config/routes.rb
(mais rotas específicas devem ser listados acima dela):
map.sitemap '/sitemap.xml', :controller => 'sitemap'
Criar a SitemapController
(app / controllers / sitemap_controller):
class SitemapController < ApplicationController
layout nil
def index
headers['Content-Type'] = 'application/xml'
last_post = Post.last
if stale?(:etag => last_post, :last_modified => last_post.updated_at.utc)
respond_to do |format|
format.xml { @posts = Post.sitemap } # sitemap is a named scope
end
end
end
end
-Como você pode ver, este é um blog, por isso é usando um modelo Post
.
Este é o modelo de visão (app / views / mapa do site / index.xml.builder):
base_url = "http://#{request.host_with_port}"
xml.instruct! :xml, :version=>'1.0'
xml.tag! 'urlset', 'xmlns' => 'http://www.sitemaps.org/schemas/sitemap/0.9' do
for post in @posts do
xml.tag! 'url' do
xml.tag! 'loc', "#{base_url}#{post.permalink}"
xml.tag! 'lastmod', post.last_modified
xml.tag! 'changefreq', 'monthly'
xml.tag! 'priority', '0.5'
end
end
end
É isso aí! Você pode testá-lo, trazendo até http: // localhost: 3000 / sitemap.xml (se estiver usando Mongrel ) em um navegador, ou talvez usando cURL.
Note que o controlador usa o método stale?
para emitir uma resposta HTTP 304 não modificado se não houver novas mensagens sinces o mapa do site foi última solicitados.
Outras dicas
Eu realmente não recomendo usando o controlador e simplesmente roteamento a ele como '/sitemap.xml', porque se seus Sitemaps vai crescer ele vai perder resourses. Seria melhor para fazer uma tarefa rake e sitemaps regenerados todas as noites ou mais, dependendo da freqüência com as alterações de conteúdo.
Se o seu site não tem em qualquer lugar perto de 50000 páginas e você não está planejando ter mais então você pode caber em um arquivo sitemap então eu sugiro que você use " Google Sitemaps com ruby ??on Rails, Capistrano, e cron " Eu sei que funciona decentemente porque eu estou usando-o com sucesso atm.
Nota: eu não iria sugerir o uso de autores maneira de copiar sitemaps cada momento em que tarefa de implementação é executado, na minha opinião não é limpo. É melhor usar diretório e ligação simbólica compartilhada para ele em implantação, então você vai ter a certeza de ter apenas uma versão de arquivos e agora perdendo espaço se cópias extras ficar para trás. Eu tenho isso na minha deploy.rb:
desc "Symlink the upload directories"
task :before_symlink do
run "rm -drf #{release_path}/public/sitemaps"
run "ln -s #{shared_path}/sitemaps #{release_path}/public/sitemaps"
end
Além disso, você pode usar " Big sitemap " gem, mas eu tê-lo encontrado apenas agora e não posso te dizer o quão bom ele é. Parece que ele é realmente fácil de configurar esta jóia e ele também usa seus trilhos rotas para a geração de link, assim você terá um problema a menos para resolver do que com a primeira solução.
O Sitemap Generator Google é a liberação oficial do Google. É fácil de instalar e configurar.
Eu recomendo que você verifique o sitemap_generator gem . Ele lida com todas essas questões para você ... e realmente, quem quer mexer autoria XML?
Aqui está um exemplo mapa do site para mostrar como você usa seus modelos Rails e ajudantes caminho para gerar seus URLs mapa do site:
# config/sitemap.rb
SitemapGenerator::Sitemap.default_host = "http://www.example.com"
SitemapGenerator::Sitemap.create do
add '/contact_us'
Content.find_each do |content|
add content_path(content), :lastmod => content.updated_at
end
end
Em seguida, você usar tarefas Rake para atualizar tão frequentemente como você gostaria. É realmente muito simples:)