рекомендуемый способ или плагин для создания Google Sitemap для приложения ruby ​​on rails? - PullRequest
3 голосов
/ 01 мая 2009

Я сделал быстрый поиск в Google и не увидел ничего сверхъестественного в том, что касается автоматизации создания и обновления моей карты сайта Google для приложения ruby ​​on rails. Есть предложения?

Ответы [ 4 ]

5 голосов
/ 01 мая 2009

Я бы действительно не рекомендовал использовать контроллер и просто перенаправлять его, например, /sitemap.xml, потому что, если ваши карты сайта будут расти, это приведет к потере ресурсов. В зависимости от частоты смены контента лучше всего ставить рейк-задачу и обновлять карты сайта каждую ночь или около того.

Если на вашем сайте нет около 50000 страниц, и вы не планируете иметь больше, чем можно поместить в один файл карты сайта, тогда я предлагаю вам использовать " Google Sitemaps с Ruby on Rails, Capistrano и Cron"Я знаю, что это работает прилично, потому что я использую это успешно, атм.

Примечание: Я бы не советовал использовать авторский способ копирования файлов сайтов каждый раз, когда запускается задача развертывания, на мой взгляд, она не чистая. Лучше использовать общий каталог и символическую ссылку на него при развертывании, тогда вы будете уверены, что у вас будет только одна версия файлов, и теперь вы будете тратить место, если дополнительные копии останутся позади. У меня есть это в моем 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

Также вы можете использовать гем " Большая карта сайта ", но я нашел его только сейчас и не могу сказать вам, насколько он хорош. Похоже, что этот драгоценный камень действительно легко настроить, и он также использует ваши маршруты рельсов для генерации ссылок, поэтому вам придется решать на одну проблему меньше, чем с первым решением.

2 голосов
/ 01 мая 2009

Я недавно добавил динамическую карту сайта в приложение блога. Эти шаги должны начать вас.

Добавьте этот маршрут в конец файла config/routes.rb (над ним должны быть указаны более конкретные маршруты):

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

Создайте 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

- Как вы можете видеть, это для блога, поэтому используется модель Post.

Это шаблон представления (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

Вот и все! Вы можете проверить это, вызвав http://localhost:3000/sitemap.xml (при использовании Mongrel) в браузере, или, возможно, используя cURL.

Обратите внимание, что контроллер использует метод stale? для выдачи ответа HTTP 304 Not Modified, если нет новых сообщений, поскольку карта сайта была запрошена последним.

0 голосов
/ 01 сентября 2011

Я бы порекомендовал вам проверить гем sitemap_generator . Он решает все эти проблемы для вас ... и действительно, кто хочет возиться с созданием XML?

Вот пример карты сайта, показывающий, как вы используете модели Rails и помощники пути для генерации URL-адресов карты сайта:

# 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

Затем вы используете задачи Rake для обновления так часто, как вам бы хотелось. Это действительно так просто:)

0 голосов
/ 15 июня 2010

Google Sitemap Generator является официальным выпуском Google. Это легко установить и настроить.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...