Google Webmaster Toolsが私のウェブサイトでブロックされた多くのリソースを報告していることに気付きました。現在、すべての「ブロックされたリソース」は、Cloudfront CDNから提供される.css、.js、および画像(.jpg、.png)です。
Googleがこれらのファイルをクロールせず、「リソースブロック」ステータスを報告しない理由をテストし、解明しようと多くの時間を費やしました。
現在、次のような複数のホスト名からこれらのファイルを提供しています:cdn1.example.com、cdn2.example.com、…
cdn1、cdn2などは、cloudfrontディストリビューション名に対するCNAMEです。
テスト:クラウドフロントディストリビューション(CNAMEなし)を直接使用しようとしましたが、問題は解決しません。
現在、私のrobots.txtは次のようになっています。
# Google AdSense
User-agent: Mediapartners-Google
Disallow:
#Google images
User-agent: Googlebot-Image
Disallow: /
User-agent: *
Disallow: /homepage
Disallow: /index.php*
Disallow: /uncategorized*
Disallow: /tag/*
Disallow: *feed
Disallow: */page/*
Disallow: *author*
Disallow: *archive*
Disallow: */category*
Disallow: *tag=*
Disallow: /test*
Allow: /
1つのサンプルページでブロックされるファイルの例:
cdn1.example.com/wp-content/plugins/wp-forecast/wp-forecast-default.css
cdn9.example.com/wp-content/plugins/bwp-minify/min/?f=wp-content/themes/magazine/css/font-awesome.min.css,wp-content/themes/magazine/css/responsive .css
cdn5.example.com/wp-content/themes/magazine/images/nobg.png
cdn6.example.com/wp-content/plugins/floating-social-bar/images/fsb-Sprite.png
cdn5.example.com/wp-content/uploads/2013/11/Design-Hotel-3-80x80.jpg
cdn5.example.com/wp-content/uploads/2013/11/Marta-Hotel-7-270x225.jpg
Robots.txtのすべてを許可しようとしましたが、常に同じ結果になります。
また、AmazonのCloudFront設定を注意深く見てきましたが、関連するものは何もありませんでした(「アクセスを制限する(署名付きURLまたは署名付きCookieを使用する)」オプションを使用せず、使用しませんでした)。
今、私はこれを調べるのに多くの時間を費やしており、これ以上のアイデアはありません。
誰かが、GooglebotがAmazon CloudFrontでホストされているファイルのクロールをブロックする理由を考えることができますか?
そのため、解決策は、Amazon cloudfrontが私のrobots.txt
も評価し、何らかの方法でgoogleの異なる構文規則を使用するように思われます。
robots.txt
の作業バージョンは次のとおりです。
User-agent: Googlebot-Image
Disallow: /
User-agent: *
Disallow: /homepage
Disallow: /uncategorized
Disallow: /page
Disallow: /category
Disallow: /author
Disallow: /feed
Disallow: /tags
Disallow: /test
これは、以前とまったく同じ機能を実行していないと言う非常に重要な注意。実際、すべての空白行、ワイルドカード、および「許可」ディレクティブを削除しました。最終結果が同じではないことを意味しています...しかし、私は十分に近いと思います。たとえば、クエリ文字列で渡されたときにタグページを除外しません...
3つの重要な注意事項:
これでテストしている場合は、各イテレーションのCloudfrontディストリビューションでrobots.txt
を無効にすることを忘れないでください。提供されていることを確認するだけで、最後のバージョンでは不十分です。
Amazon Cloudfrontが理解するrobot.txt
構文の定義はどこにも見つかりませんでした。だから、それは試行錯誤でした。
結果をテストするには、Googleウェブマスターの「フェッチしてレンダリング」ツールとモバイルフレンドリーテスターを使用します( https://www.google.com/webmasters/tools/mobile-friendly/ )
Cloudfrontがrobots.txt
を検証および評価している理由がわかりません。このファイルは、私と私のサイトに来るクローラーとの「取引」です。 Amazonは途中でビジネスを展開していません。私のrobots.txt
をいじるのは単なる愚かです。
クラウドフロントが私のrobots.txt
構文を2番目に推測している可能性があることは決して思いつきませんでした。
バケットにrobots.txtを作成します。
クラウドフロントディストリビューション用に別のOriginを作成します。
バケットの優先度をウェブサイトよりも高く設定します。
Cloudfrontでサイトのrobots.txtを無効にします。
上記を実行した後、Googleはサイトをクロールするときにrobots.txtのサイトを読み取り、cdnからのリンクをたどると別のrobots.txtを表示します。
Googleは、メインサイトのルートでrobots.txtを使用して、外部リソースのインデックス作成をブロックしません。サブドメインを使用すると、cdnまたはその他は外部ドメインとして分類されるため、コンテンツをブロックする唯一の方法は、CDN自体が提供するファイルでヘッダー応答を使用するか、cdnまたはサブドメインでrobots.txtを使用することです。
を使用して:
#Google images
User-agent: Googlebot-Image
Disallow: /
ローカルの画像のみをブロックする場合は、CDNで同じことを行う必要があります。
その可能性はヘッダー応答の問題であり、CDN上のファイルの1つで「CURL」を実行する必要があります。次のようになります。
HTTP/1.0 200 OK
Cache-Control: max-age=86400, public
Date: Thu, 10 May 2012 07:43:51 GMT
ETag: b784a8d162cd0b45fcb6d8933e8640b457392b46
Last-Modified: Tue, 08 May 2012 16:46:33 GMT
X-Powered-By: Express
Age: 7
Content-Length: 0
X-Cache: Hit from cloudfront
X-Amz-Cf-Id: V_da8LHRj269JyqkEO143FLpm8kS7xRh4Wa5acB6xa0Qz3rW3P7-Uw==,iFg6qa2KnhUTQ_xRjuhgUIhj8ubAiBrCs6TXJ_L66YJR583xXWAy-Q==
Via: 1.0 d2625240b33e8b85b3cbea9bb40abb10.cloudfront.net (CloudFront)
Connection: close
注意すべき点は次のとおりです。
HTTP/1.1 200 OK
Date: Tue, 25 May 2010 21:42:43 GMT
X-Robots-Tag: googlebot: noindex
問題を発見しました:CloudFrontはrobots.txtを読み取り、コンテンツの配信を阻止しますが、ロボットがすべきこととはどの程度異なるかを解析します。
たとえば、robots.txtの次のコンテンツ:
Disallow: */wp-contents/ Allow: */wp-contents/themes/
Googlebotがそれを取得すると、インデックスを作成します。 CloudFrontがそれを読み取るとき、「Allow」ディレクティブを考慮せず、*/wp-contents/themes/
内の何かを提供することを禁止します。
簡単な答え:CloudFrontディストリビューションのrobots.txtを確認してください。問題がある可能性があります。無効にし、修正したバージョンで更新すると、動作するはずです!