Thêm tuyến đường này về phía dưới cùng của tập tin config/routes.rb
của bạn (các tuyến đường cụ thể hơn sẽ được liệt kê ở trên nó):
map.sitemap '/sitemap.xml', :controller => 'sitemap'
Tạo 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
— Như bạn có thể thấy, đây là một blog, do đó, sử dụng mô hình Post
. Đây là mẫu xem 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
Vậy đó! Bạn có thể kiểm tra nó bằng cách đưa lên http://localhost:3000/sitemap.xml (nếu sử dụng Mongrel) trong trình duyệt hoặc có thể bằng cách sử dụng cURL.
Lưu ý rằng bộ điều khiển sử dụng phương thức stale?
để phát hành phản hồi HTTP 304 không được sửa đổi nếu không có bài đăng mới nào có sơ đồ trang web được yêu cầu lần cuối.
Nguồn
2010-01-16 14:46:51
Cảm ơn câu hỏi của bạn, tôi đã tò mò về sơ đồ trang web và đã khám phá rất nhiều thứ khác để cải thiện trang web của tôi đối với Google – Veger