Google Analyticsの「_trackPageview」で割り当てた仮想URLがGoogleウェブマスターツールで404エラーを出してしまう

Google Analyticsでは、Javascriptイベントを利用して「_trackPageview」関数を呼び出すと、ファイルのダウンロードやフォームの送信をページビューとしてカウントすることができます。

このとき仮想のURLを割り当てますが、このURLが、Googleウェブマスターツールで404エラーとしてレポートされることがあります。

最近更新されたばかりのウェブマスターツールのヘルプによると、無視して構わないとのことです。

予期しない 404 エラー

クロール エラーには時折、自分のサイトにもウェブ上にも存在しないはずの URL に対する 404 エラーが表示されることがあります。このような予期しない URL が生成される原因としては、JavaScript や Flash ファイルなどの埋め込まれたコンテンツの中にあるリンクを Googlebot がたどろうとしたことが考えられます。

たとえば、Google Analytics でファイル ダウンロードをトラッキングするために次のコードが使用されているとします。


<a href="helloworld.pdf" onClick="_gaq.push(['_trackPageview','/download-helloworld']);">Hello World PDF</a>

Googlebot は、このコードを検出したときに、たとえば http://www.example.com/download-helloworld という URL をクロールしようとすることがありますが、これは実在するページではありません。この場合に、このリンクが 404(Not Found)エラーとしてウェブマスター ツールのクロール エラーに表示されることがあります。

Google は、この種の問題がクロール エラーに表示されないように、問題の発見と解決に努めています。基本的に、404 エラーが発生してもサイトの検索パフォーマンスに影響が及ぶことはありません。したがって、その URL が自分のサイトに存在するはずがないと確信している場合は、このエラーを無視してもかまいません。重要なのは、このような無効な URL に対して正しい 404 HTTP レスポンス コードが返されることと、サイトのrobots.txtファイルによってブロックされていないことです。

PDFファイルのダウンロードリンクをクリックしても通常はページビューは発生しません。
しかしGoogle Analyticsがページビューをカウントする関数の「_trackPageview」をJavascriptのonClickイベントで呼び出すと、任意のURLを割り当てることができます。

ヘルプにある例の場合だと、Hello World PDFというファイルをダウンロードしようとしてユーザーがリンクをクリックすると、Google Analyticsでは「/download-helloworld」というURLへのアクセスが発生したとして記録されます。

こうするとPDFファイルのダウンロード数を計測できます。

Javascriptイベントによる「_trackPageview」呼び出しは、ファイルのダウンロードの他にフォームの送信やFlashの再生などの計測にもよく利用されます。
※単にダウンロードの数や動画の再生数を知るだけなら「_trackEvent」関数を呼び出して、ページビューを発生させないイベントトラッキングを使うほうがいい場合もありますが、目標設定と絡めるときなどは「_trackPageview」を使いますね。新しいバージョンのGAではイベントを目標として設定できるようになったみたいです。

本来ならページビューとしてカウントされないアクションをGoogle Analyticsでレポートできる便利な仕組みなのですが、このとき指定した仮想のURLをGooglebotにアクセスしようとして404エラーを吐いてしまうことがあります。

僕も自分のサイトで経験しています。

記録のためにURLを架空で設定しているのにたどってしまうんですね。
でも実際には存在しないわけですから「ページが見つからない」になってしまいます。

ですが、下の3つをクリアできていれば無視して大丈夫ということです。

  • 原因を理解していて問題がないことが分かっている
  • 指定したURLが404エラーを返す
  • 仮想URLをrobots.txtでブロックしていない(ブロックすると404を返してもらえないから)

迷惑なエラーといえば迷惑なエラーですが、GooglebotがJavascriptのリンクを読める証拠にもなりますね。