Файлы карты сайта Google для проектов Rails

Есть ли простой способ создать файл sitemaps для проектов Rails? Особенно для динамических сайтов (например, переполнение стека) должен быть способ динамического создания файла Sitemap. Какой путь пойти в Ruby и /или Rails?

Что бы вы предложили? Есть ли там что-то хорошее?

58 голосов | спросил z3cko 16 Jpm1000000pmSat, 16 Jan 2010 15:11:57 +030010 2010, 15:11:57

4 ответа


0

Добавьте этот маршрут в конец вашего 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. Это HAML шаблон представления (app /views /sitemap /index.xml.haml):

- base_url = "http://#{request.host_with_port}"
!!! XML
%urlset{:xmlns => "http://www.sitemaps.org/schemas/sitemap/0.9"}
  - for post in @posts
    %url
      %loc #{base_url}#{post.permalink}
      %lastmod=post.last_modified
      %changefreq monthly
      %priority 0.5

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

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

ответил John Topley 16 Jpm1000000pmSat, 16 Jan 2010 17:46:51 +030010 2010, 17:46:51
0

Теперь для rails3 лучше использовать полнофункциональный sitemap_generator гем.

ответил Ninad 22 WedEurope/Moscow2010-12-22T14:51:20+03:00Europe/Moscow12bEurope/MoscowWed, 22 Dec 2010 14:51:20 +0300 2010, 14:51:20
0

Я бы порекомендовал вам ознакомиться с камнем 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 для обновления так часто, как вам хочется. Это действительно так просто:)

ответил Karl Varga 1 stEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 01 Sep 2011 22:39:04 +0400 2011, 22:39:04
0

Эта статья объясняет, как можно создать карту сайта.

Как правило, следует создать контроллер, который находит все страницы (например, ваши сообщения) и помещает их в файл XML. Затем вы сообщаете Google о местонахождении XML-файла и обновлении вашего веб-сайта.

Простой карта сайта Google rails раскрывает множество других статей, объясняющих в основном то же самое.

ответил Veger 16 Jpm1000000pmSat, 16 Jan 2010 16:34:20 +030010 2010, 16:34:20

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132