Ruby On Rails in UA Icon_home Главная Add to bookmarks Translate translate Profile Войти
Регистрация Форум Блоги Пользователи Ресурсы Список джемов      Поиск   

Затегированы темы

Генерация sitemap для google and yandex

Date2008-06-07 UserRuslan Voloshin Commentкоментарии 3

Сегодня я хочу поделиться с вами опытом генерации sitemap  для поисковиков. Зачем это надо ?? спросите вы, да все просто надо помочь поисковику чтобы он знал важность страниц вашего сайта их количество дату последнего обновления и желаемую частоту обновления индексированых страниц, в основном это касается динамического контента.

http://webmaster.yandex.ru/ адрес для веб мастеров

google.com/webmasters" target="_blank">https://www.google.com/webmasters/ адрес для веб мастеров

Не для кого не секрет о том что гугл вебмастер и яндекс вебмастер дают возможность подказывать им указывая ссылки на файлы sitemap. Ограничение у гугла на количество ссылок страниц для одного файла составляет 50000. елси вы не смогли всместить все свои ссылки тогда будьте любезны создайте еще один файл и отправьте его.

Гугл позволяет давать ему около видов sitemap, такие как:

 

  • Общий интерактивный Sitemap
  • Sitemap для мобильных устройств
  • Sitemap для поиска кода
  • Sitemap для видео

Яндекс позволяет тоже скармливать несколько файлов карт тоже.

для страниц можно выставить частоту обновления контента. Поддерживаются следующие форматы:

  • always (всегда)
  • hourly (ежечасно)
  • daily (ежедневно)
  • weekly (еженедельно)
  • monthly (ежемесячно)
  • yearly (ежегодно)
  • never (никогда)

 

Формат протокола Sitemap состоит из тегов XML. Для всех значений данных в Sitemap должно использоваться google.com/webmasters/tools/docs/ru/protocol.html#escaped">маскирование. Для самого файла должна использоваться кодировка UTF-8.

Ниже приведен пример Sitemap, в который включен только один URL, но используются все необязательные теги. Необязательные теги выделены курсивом.


  <google.com/webmasters/tools/docs/ru/protocol.html#urlsetdef"> urlset xmlns="http://www.google.com/schemas/sitemap/0.84">
   <google.com/webmasters/tools/docs/ru/protocol.html#urldef"> url>
    <google.com/webmasters/tools/docs/ru/protocol.html#locdef"> loc>http://www.example.com/</loc>
    <google.com/webmasters/tools/docs/ru/protocol.html#lastmoddef"> lastmod>2005-01-01</lastmod>
    <google.com/webmasters/tools/docs/ru/protocol.html#changefreqdef"> changefreq>monthly</changefreq>
    <google.com/webmasters/tools/docs/ru/protocol.html#prioritydef"> priority>0.8</priority>
   </url>  </urlset>

Sitemap должен:

  • Начинаться открывающим тегом <urlset> и заканчиваться закрывающим тегом </urlset>.
  • Включать запись <urlset> для каждого URL как родительский тег XML.
  • Включать дочернюю запись <loc> для каждого родительского тега <url>.

Более подробно вы сможете прочитать на этой странице

google.com/webmasters/tools/docs/ru/protocol.html" target="_blank">https://www.google.com/webmasters/tools/docs/ru/protocol.html - инструкция по генерации файла карты

А теперь перейдем собственно к програмированию выдачи такого файла.

Как обычно сгенерируем контроллер Sitemap c екшином xml

script/genetate Sitemap xml

и так собержание файла контролера Sitemap.rb

class SitemapController < ApplicationController

  def xml
    @forums = Forum.find(:all)
    @messages = Message.find(:all, :order => "updated_at DESC", :limit => 25000)
    @blogs = Blog.find(:all, :order => "updated_at DESC", :limit => 25000)
    @last_updated = [@messages[0].updated_at,@blogs[0].updated_at].max
    headers["Content-Type"] = "text/xml"
    headers["Last-Modified"] = @last_updated.httpdate
    render :layout => false
  end
end

Что я хочу показать поисковику?

ссылки на страницы с разделами форума, ссылки на страницы с сообщениями, и страницы сообщений с блогах.

замечу  что я добавил в файл routes.rb следующую строчку

   map.sitemap "/sitemap.xml", :controller => "sitemap", :action => "xml"

и переименовал файл который у меня сгенерировался на views/sitemap/xml.rxml , привожу его содержание

xml.instruct! :xml, :version=>"1.0"
xml.tag! 'urlset', "xmlns" => "http://www.sitemaps.org/schemas/sitemap/0.9" do
  #README https://www.google.com/webmasters/tools/docs/ru/protocol.html
  #главная страница
  xml.tag! 'url' do
    xml.tag! 'loc', 'http://'+SITE_DOMAIN
    xml.tag! 'lastmod', @last_updated.to_s(:date)
    xml.tag! 'changefreq', 'daily'
    xml.tag! 'priority', '0.1'
  end
  #разедлы
  xml.tag! 'url' do
    xml.tag! 'loc', url_for(:only_path => false, :controller => 'forums', :action => 'list')
    xml.tag! 'lastmod', @last_updated.to_s(:date)
    xml.tag! 'changefreq', 'daily'
    xml.tag! 'priority', '0.1'
  end
 
  xml.tag! 'url' do
    xml.tag! 'loc', blogs_url
    xml.tag! 'lastmod', @last_updated.to_s(:date)
    xml.tag! 'changefreq', 'monthly'
    xml.tag! 'priority', '0.9'
  end
 
  #разделы форума
  for f in @forums do
    xml.tag! 'url' do
      xml.tag! 'loc', url_for(:only_path => false, :controller => 'messages', :action => 'list', :forum => f.id)
      xml.tag! 'lastmod', f.updated_at.to_s(:date) #strftime("%Y-%m-%d")
      xml.tag! 'changefreq', 'monthly'
      xml.tag! 'priority', '0.9'
    end
  end
  #Страницы блогов
  for blog in @blogs do
    xml.tag! 'url' do
      xml.tag! 'loc', formatted_blog_url(blog,:html)
      xml.tag! 'lastmod', blog.updated_at.to_s(:date) #strftime("%Y-%m-%d")
      xml.tag! 'changefreq', 'daily'
      xml.tag! 'priority', '0.8'
    end
  end
  #страницы сообщений на форуме
  for page in @messages do
    xml.tag! 'url' do
      xml.tag! 'loc', url_for(:only_path => false, :controller => 'messages', :action => 'show', :id => page.id)
      xml.tag! 'lastmod', page.updated_at.to_s(:date) #strftime("%Y-%m-%d")
      xml.tag! 'changefreq', 'monthly'
      xml.tag! 'priority', '0.7'
    end
  end
end

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

Удачи всем в продвижении своего сайта

 

Rss
Ключевые слова:
Гости: 207 Онлайн: Евгений Хлобыстин, Roman V. Babenko,
Rambler's Top100
О проекте по всем вопросам обращайтесь на support
Rubyclub.com.ua Copyright © 2007 - 2008