Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the all-in-one-wp-security-and-firewall domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/meaningfree/www/analytics/wp-includes/functions.php on line 6114
【GA】ドキュメントルート直下とサブディレクトリに別々のサイトがある場合のトラッキング – meaningfree.analytics
月. 2月 10th, 2025

_setCookiePathの必要性について書いた記事にrai様からコメントいただきまして、返信を書こうとしたら記事がひとつ書けてしまいそうでしたので投稿します。

例えば、サイトAはドキュメントルート直下にコンテンツが配置されていて、サイトBは同じドメインの/directory配下にコンテンツが配置されているというケースがあったとします。

サイトA: http://www.domain.com/
サイトB http://www.domain.com/directory/

こんな形でサイトが分かれていた場合のトラッキング、およびCookieの干渉についてです。

まず、GAのデフォルトのトラッキングコードだけでは、Cookieが干渉してしまうので、サイトBでは_setCookiePathをしておきます。これについて詳しくは前回の記事にて。

そうするとCookieのパスは下記のようになります。

サイトAのCookieのパス /(ルート)
サイトBのCookieのパス /directory

というところまでが前置きです。前置きが長くてすいません。以下がこの記事の本題です。

Cookieのパスが「/(ルート)」と「/directory」で分かれていれば、基本的には干渉しない

Cookieのパスが「/(ルート)」(つまり親階層)と「/directory」(つまり子階層)で分かれていても、基本的には干渉しない=別のCookieとして識別されるような動きをします

ただし完全に干渉しないようにはなっていません。特定のケースでは干渉してしまいます。

Cookieが干渉してしまうケース

  • サイトA・B間をまたがるリンクで遷移をする
  • リンク先のサイトのCookieを持っていない(=初回訪問である)

という2つの条件が両方とも満たされているときにCookieの干渉が発生します。困ったことにこのようなケースは決してレアケースではなく、よくある話だと思います。

どのようにCookieが干渉してしまうのか

私が検証したところでは、

検索エンジンA サイトA サイトB

と遷移した場合、サイトBの参照元が検索エンジンAになりました。(本当はサイトAにしたい)

また、

検索エンジンA サイトB サイトA

と遷移した場合、サイトAの参照元がノーリファラーになりました。(本当はサイトBにしたい)

じゃあ、どうすればいいのか

サイトA・B間をまたぐリンクすべてに、ちょっと細工をします。もっと具体的に言いますと、リンクURLに参照元を指定するパラメータ(引数)を設定して、強引に参照元をサイトAまたはBにします。

下記のようなケースでサイトBからサイトAに遷移するリンクする場合を例にして、説明します。

リンク元ページ http://www.domain.com/directory/index.html
実際のリンクURL http://www.domain.com/index.html
引数つきのリンクURL http://www.domain.com/index.htmll?utm_medium=referral&utm_source=domain.com&utm_campaign=(referral)&utm_content=/directory/index.html

一番下の「引数つきのリンクURL」をaタグなどに設定してください。赤文字の部分が必要な引数で、これをサイトA・B間をまたぐリンクすべてに設定する必要があります。

引数について、解説します。

キー 説明
utm_medium referral 固定。トラフィックレポートで「メディア」として表示されるものです。
utm_source domain.com 「参照元」として表示されるものです。ドメイン名を指定してください。
utm_campaign (referral) 固定。ここも(referral)と書かないと上手くいきませんでした。
utm_content /directory/indx.html 「参照URL」として表示されるものです。リンクが書かれたページ(リンク元ページ)のパスを記載してください。

utm_sourceはサイトごと(ドメインごと)、utm_contentはリンク元のページごとに異なる値を設定してください。全ページ同じ引数ではないところが、さらに困ったところですね…。

実際の現場では、すべてのリンクに引数を入れるというのは現実的ではないような気がしますが、現状のGAの仕様ではこれが限界のようです。

なお、リンクURLに引数をつけて参照元を強引に指定するという方法は、Googleのヘルプフォーラムで、カグア様・木田様に教えていただきました。

1つのドメイン内に複数サイトがある場合のトラッキングについて

カグア様・木田様ありがとうございました。

2 thoughts on “【GA】ドキュメントルート直下とサブディレクトリに別々のサイトがある場合のトラッキング”
  1. >下記のようなケースでサイトAからサイトBに遷移するリンクする場合を例にして、説明します。
    例として挙げられた設定はサイトBからサイトAへ遷移する場合の例ではないでしょうか?

    サイトAからサイトBに遷移するリンクする場合の「引数つきのリンクURL」は下記になるのではないかと思ったのですが。
    http://www.domain.com/directory/index.html?utm_medium=referral&utm_source=domain.com&utm_campaign=(referral)&utm_content=/

    追加でお聞きしたいのですが、例えばファイル名がindex.phpでアドレスを叩いてもファイル名が表示されないサイトの場合、utm_contentの値は「/directory/indx.php」ではなく「/directory/」で良いのでしょうか?

    1. コメントありがとうございます。

      > 例として挙げられた設定はサイトBからサイトAへ遷移する場合の例ではないでしょうか?
      こちらご指摘の通りです…。記事を修正いたしました。
      ご指摘いただきまして、ありがとうございました。

      > 例えばファイル名がindex.phpでアドレスを叩いてもファイル名が表示されないサイトの場合、utm_contentの値は「/directory/indx.php」ではなく「/directory/」で良いのでしょうか?
      「www.domain.com/directory/」というURLでindex.phpが表示されるのではあれば、ご質問への回答としては「どちらでも問題ない」ということになります。
      utm_contentはどのような値を取っても問題はないので、「どのページから流入したか」が分かれば最低限OKです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です