manière recommandée ou plugin pour créer des sitemaps google pour ruby ??on rails app?

StackOverflow https://stackoverflow.com/questions/810478

  •  03-07-2019
  •  | 
  •  

Question

J'ai effectué une recherche rapide sur Google et je n'ai rien vu d'extraordinaire pour automatiser la création et la mise à jour de mon sitemap Google pour l'application ruby ??on rails. Des suggestions?

Était-ce utile?

La solution

J'ai récemment ajouté un sitemap dynamique à une application de blog. Ces étapes devraient vous aider à démarrer.

Ajoutez cette route vers le bas de votre fichier config / routes.rb (des routes plus spécifiques devraient être répertoriées au-dessus de celle-ci):

map.sitemap '/sitemap.xml', :controller => 'sitemap'

Créez le 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

: comme vous pouvez le constater, il s’agit d’un blog. Vous utilisez donc un modèle Post .

Voici le modèle de vue (app / views / sitemap / 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

C'est ça! Vous pouvez le tester en affichant http: // localhost: 3000 / sitemap.xml (si vous utilisez Mongrel ) dans un navigateur, ou peut-être en utilisant cURL.

Notez que le contrôleur utilise la méthode stale? pour émettre une réponse HTTP 304 non modifiée s'il n'y a pas de nouveaux messages depuis la dernière demande du plan Sitemap.

Autres conseils

Je ne recommanderais vraiment pas l'utilisation de controller et le routage vers celui-ci comme "/sitemap.xml", car si vos sitemaps s'agrandissent, les ressources seront gaspillées. Il serait préférable de créer une tâche de commission et de régénérer les plans de site toutes les nuits ou à peu près, en fonction de la fréquence de modification du contenu.

Si votre site ne contient pas plus de 50000 pages et que vous n'envisagez pas d'en avoir plus, vous pouvez insérer un fichier de plan de site, puis je vous suggère d'utiliser & a; sitemaps pour Google avec Ruby on Rails, Capistrano et Cron " Je sais que cela fonctionne décemment parce que je l'utilise avec succès atm.

Remarque: je ne suggérerais pas d'utiliser la méthode de l'auteur pour copier les plans Sitemap chaque fois que la tâche de déploiement est exécutée. À mon avis, ce n'est pas propre. Il est préférable d'utiliser un répertoire partagé et un lien symbolique vers celui-ci lors du déploiement. Vous serez alors assuré de n'avoir qu'une seule version des fichiers et de perdre de l'espace si des copies supplémentaires sont laissées. J'ai ceci dans mon 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

Vous pouvez également utiliser le plan sitemap complet " gem, mais je l’ai trouvé tout à l’heure et je ne peux pas vous dire à quel point c’est bon. Il semble très facile d’installer ce joyau et il utilise également vos routes ferroviaires pour la génération de liens. Vous aurez donc un problème à résoudre de moins qu’avec la première solution.

Google Sitemap Generator est la version officielle de Google. Il est facile à configurer et configurer.

http://code.google.com/p/googlesitemapgenerator/

Je vous recommande de consulter la bijou sitemap_generator . Il gère toutes ces questions pour vous ... et vraiment, qui veut gâcher la création XML?

Voici un exemple de sitemap indiquant comment vous utilisez vos modèles Rails et vos aides de chemin pour générer les URL de votre sitemap:

# 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

Vous utilisez ensuite les tâches de rake pour actualiser autant de fois que vous le souhaitez. C’est aussi simple que cela:)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top