ruby on rails रेल परियोजनाओं के लिए Google साइटमैप फ़ाइलें




ruby-on-rails sitemap (5)

क्या रेल परियोजनाओं के लिए साइटमैप फ़ाइल बनाने का एक आसान तरीका है? विशेष रूप से गतिशील साइटों (जैसे कि उदाहरण के लिए स्टैक ओवरफ्लो) में डायनामिक रूप से साइटमैप फ़ाइल बनाने का एक तरीका होना चाहिए। रूबी और / या रेल में जाने का रास्ता क्या है?

आप क्या सुझाव देंगे? क्या कोई अच्छा रत्न है?


इस रूट को अपने config/routes.rb मार्गों के नीचे की ओर जोड़ें config/routes.rb फ़ाइल (इसके ऊपर और अधिक विशिष्ट रूट सूचीबद्ध होने चाहिए):

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

SitemapController नियंत्रक (ऐप / कंट्रोलर / SitemapController ) बनाएँ:

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 व्यू टेम्प्लेट (एप्लिकेशन / दृश्य / साइटमैप / इंडेक्स। 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 (यदि मोंगरेल का उपयोग कर रहे हैं), या शायद cURL का उपयोग करके इसे टेस्ट कर सकते हैं।

ध्यान दें कि नियंत्रक stale? का उपयोग करता है stale? HTTP 304 नहीं जारी करने की विधि यदि कोई नई पोस्ट नहीं है तो पापुलर प्रतिक्रिया है, साइटमैप अंतिम अनुरोध किया गया था।


मुझे जॉन टॉपले का जवाब पसंद है क्योंकि यह एक रत्न की आवश्यकता के बिना इतना सरल और सुरुचिपूर्ण है। लेकिन यह थोड़ा दिनांकित है, इसलिए मैंने रेल्स 4 और Google वेबमास्टर टूल्स के नवीनतम साइटमैप दिशानिर्देशों के लिए उनके उत्तर को अपडेट कर दिया है।

config / routes.rb:

get 'sitemap.xml', :to => 'sitemap#index', :defaults => { :format => 'xml' }

एप्लिकेशन / नियंत्रक / sitemap_controller.rb:

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.all }
      end
    end
  end
end

एप्लिकेशन / विचारों / साइटमैप / index.xml.haml:

!!! XML
%urlset{:xmlns => "http://www.sitemaps.org/schemas/sitemap/0.9"}
  - for post in @posts
    %url
      %loc #{post_url(post)}/
      %lastmod=post.updated_at.strftime('%Y-%m-%d')
      %changefreq monthly
      %priority 0.5

आप इसे लोकलहोस्ट करके ला सकते हैं: 3000 / साइटमैप। xml।


अब rails3 के लिए, पूर्ण विशेषताओं वाले sitemap_generator मणि का उपयोग करना बेहतर है।


मैं आपको सलाह दूंगा कि आप साइटमैप_ जेनरेटर मणि की जांच करें। यह आपके लिए इन सभी मुद्दों को संभालता है ... और वास्तव में, जो XML को संलेखन के आसपास गड़बड़ करना चाहता है?

यहां एक उदाहरण साइटमैप दिखाया गया है कि आप अपने साइटमैप 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

फिर आप जितनी बार चाहें उतने बार ताज़ा करने के लिए रेक कार्यों का उपयोग करें। वास्तव में यह उतना आसान है :)


यह लेख बताता है कि एक साइटमैप कैसे उत्पन्न किया जा सकता है।

मूल रूप से एक नियंत्रक बनाना चाहिए जो सभी पृष्ठों (जैसे आपके पोस्ट) पाता है और एक XML फ़ाइल में डाला जाता है। आगे आप Google को XML फ़ाइल के स्थान के बारे में बताते हैं और जब आपकी वेबसाइट अपडेट होती है।

एक साधारण Google रेल साइटमैप क्वेरी में मूल रूप से एक ही बात बताते हुए कई अन्य लेखों का पता चलता है।







google-webmaster-tools