1

入力したウェブサイトのURLのサイトマップが存在するかどうかを確認する必要があるアプリケーションをレールで開発していますか?たとえば、ユーザーがhttp://google.comと入力すると、「Sitemappresent」が返されます。通常、ウェブサイトのURLの末尾に/sitemap.xmlまたは/sitemapが付いているソリューションを確認しました。 typhoeus gemを使用してこれをチェックし、response.codeでURL(www.google.com/sitemap.xmlやwww.apple.com/sitemapなど)をチェックして、200または301で返される場合は、サイトマップが存在することを確認します。しかし、サイトマップがなくても301を返すサイトがあることを発見しました。メインページにリダイレクトします(例: http: //yournextleap.com/sitemap.xml)、したがって、私は決定的な結果を得ることができません。どんな助けも本当に素晴らしいでしょう。typhoeusを使用してサイトマップを確認するためのサンプルコードは次のとおりです。

# the request object
request = Typhoeus::Request.new("http://apple.com/sitemap")

# Run the request via Hydra.
hydra = Typhoeus::Hydra.new

request.on_complete do |response|
  if response.code == 301
   p "success 301" # hell yeah
   elsif response.code == 200
    p  "Success 200"
   elsif response.code == 404
.   puts "Could not get a sitemap, something's wrong."  
    else
    p "check your input!!!!"
end 
4

2 に答える 2

1

HTTP応答ステータスコード301MovedPermanentlyは、永続的なリダイレクトに使用されます。このステータスコードは、ロケーションヘッダーとともに使用する必要があります。RFC 2616は、次のように述べています。

If a client has link-editing capabilities, it should update all references to the Request URI.
The response is cachable.
Unless the request method was HEAD, the entity should contain a small hypertext note with a hyperlink to the new URI(s).
If the 301 status code is received in response to a request of any type other than GET or HEAD, the client must ask the user before redirecting.

301応答が、サイトマップがあったことを示しているとみなすのは公平ではないと思います。sitemap.xmlまたはsitemapディレクトリの存在を確認している場合、期待される正しい応答は2XXです。

3XXリクエストがサイトマップへのリダイレクトを示していると想定することに固執している場合は、リダイレクトと追加ロジックに従って、ページのURL(ホームページの場合)またはページのコンテンツをチェックして、XMLが含まれているかどうかを確認します。構造。

于 2012-07-02T19:55:48.553 に答える
0

サイトマップもsitemap.xml.gz-に圧縮される可能性があるため、そのファイル名も確認する必要があります。また、別の名前が付けられている可能性のある他の多くのサブサイトマップを指すインデックスファイルが含まれている場合もあります。

私のプロジェクトの例として、私は次のことを行っています。

sitemap_index.xml.gz 
  -> sitemap_en1.xml.gz (english version of links)
  -> sitemap_pl1.xml.gz (polish version of links)
  -> images_sitemap1.xml.gz (only images sitemap)

ウェブサイトはそれらのファイル名で検索エンジンにpingを送信しますが、ファイルにそれらが含まれている場合もある/robots.txtので、そこでそれらを探してみてください。たとえば、 http: //google.comのファイルの最後に次のように表示されます。

(サイトマップの名前がいかに奇妙であるかをご覧ください!)

Sitemap: http://www.gstatic.com/s2/sitemaps/profiles-sitemap.xml
Sitemap: http://www.google.com/hostednews/sitemap_index.xml
Sitemap: http://www.google.com/ventures/sitemap_ventures.xml
Sitemap: http://www.google.com/sitemaps_webmasters.xml
Sitemap: http://www.gstatic.com/trends/websites/sitemaps/sitemapindex.xml
Sitemap: http://www.gstatic.com/dictionary/static/sitemaps/sitemap_index.xml

約301:Googleボットまたは他のクローラーとしてなりすましを試すことができます。多分彼らはロボット以外の全員をリダイレクトします。しかし、彼らが全員をリダイレクトした場合、それについて実際にできることは何もありません。

于 2012-07-02T20:04:54.123 に答える