- ベストアンサー
apacheのmod_usertrackとDNT
Apacheでmod_usertrackを使ってトラッキングクッキーをセットしています。 最近FireFoxなどでトラッキングの拒否を設定できるようになり HTTPリクエストヘッダーに DNT:1 という項目が追加されるようになりました。 このDNTが送られてきた場合、トラッキングをしないようにしたいのですが Apacheの設定でそれを実現することは出来るでしょうか? トラッキングにmod_usertrackを使ってはいますが、 もし他にも同じ機能があるならそれに変更することは可能です。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
URL を多重化するまでもなくて、 クエリストリングで十分か! あとは、クエリストリングで、 CookieTracking の on|off をすればできるきがする。 そにまえに、DNT:1 のときに ?someflag にリダイレクトしておしまい。
その他の回答 (5)
- dscripty
- ベストアンサー率51% (166/325)
そのうち mod_usertrack に DNT:1 がインプリされそうな気がするけど、急ぎなら自分でソースを改変したほうが早いかも。
お礼
私もそんな気がします。 急ぎでも必須というわけでもなく、世の中の流れがそんな雰囲気なので 先に対応しておければベストかと思い投稿させてもらいました。 いろいろご検討いただきありがとうございました。
- dscripty
- ベストアンサー率51% (166/325)
「これだとアクセスログには2つ残ってしまわな いですか? 」 再掲載 「CustomLog ディレクティブはサーバへのリク エストを ログ収集するために使われます。ログ の書式が指定され、 環境変数を使ってロギング が条件に応じて行なわれるようにすることもで きます。」
- dscripty
- ベストアンサー率51% (166/325)
あまりきれいじゃないけど。。。 回避方法その一。 トラッキングする(CookieTracking on)通常の URL と DNT:1 専用(CookieTracking on|off)の URL を一つずつ用意する。 参照先のコンテンツは同じ。 DNT:1 がセットさせているかどうかで、mod_rewrite して、 DNT:1 専用の URL に転送させる。 ドキュメントには、link rel="canonical" を入れて検索エンジンの重複判定を避ける。 かな?
補足
早速のご検討ありがとうございます。 mod_rewriteの動きをちゃんとわかっていないのですが、 これだとアクセスログには2つ残ってしまわないですか? そうだとこの方法は採用できないんです。 最初の質問に書いておくべき内容だったと思いますが、 各ドキュメントには一切変更を加えないことが条件になります。 各ドキュメントを修正するならJavaScript作ってそれを読みこませればこの要件は実現できるので。 ご検討いただいた方法なら確かにトラッキングクッキーをセットするしないの制御が可能かと思いますが、 目的はトラッキングIDを仕込んでのアクセスログ解析にあるので、変更によってアクセスが増えたり ドキュメントを修正することは出来ないんです。
- dscripty
- ベストアンサー率51% (166/325)
「このDNTが送られてきた場合、トラッキングをしないようにしたい」 ↓ 『トラッキングの結果(log)を残さなない』って読んじゃった。。。 「トラッキングクッキーを返さない」 が、やりたいことなら、 トラッキングされているとユーザに意識させないってことだから、 まったく「やりたいことが違う」とおもう。 すこし興味があるから、時間のあるときに、もうちょっと調べてみるけど、 先にわかって、もし、気が向いたら補足に説明を残してくれるとうれしい!
- dscripty
- ベストアンサー率51% (166/325)
参考になるといいけど。。。 mod_log_config - Apache HTTP サーバ http://httpd.apache.org/docs/2.0/mod/mod_log_config.htm 「CustomLog ディレクティブはサーバへのリクエストを ログ収集するために使われます。ログの書式が指定され、 環境変数を使ってロギングが条件に応じて行なわれるようにすることもできます。」 SetEnvIf ディレクティブ < mod_setenvif - Apache HTTP サーバ http://httpd.apache.org/docs/2.0/ja/mod/mod_setenvif.html#setenvif 「SetEnvIf ディレクティブは、リクエストの属性に基づいて環境変数を定義します。 最初の引数で指定できる attribute は以下の三つのどれかです: 1. HTTP リクエストヘッダフィールド (詳しい情報は RFC 2616 を 参照してください)。例えば、Host, User-Agent, Referer, Accept-Language です。リクエストヘッダの集合を現すために 正規表現を使うこともできます。」
補足
ご回答ありがとうございます。 私の読み違いでなければ残念なことに少しやりたいことが違うようです。 やりたいことはヘッダーにDNTが含まれるアクセスの応答にトラッキングクッキーを返さない方法です。 mod_log_configはログのフォーマットを変える方法ですよね? これではDNTが設定されていた時にログを取らない、フォーマットを変更するということは出来ると思いますが、 クライアントブラウザにはトラッキングクッキーが送られてしまいます。 SetEnvIfは条件により環境変数をセットするものであり、 Apacheの設定の有効/無効を切り替えることは出来ないようです。
お礼
ご検討ありがとうございます。 ?someflagがあるときにmod_usertrackが機能する(もしくは機能しない)ようにするということですね? で、someflagがセットされているときはログを取らないようにして2アクセスに見えないようにすると。 あえて2アクセスログングされるようにしたらどれだけのアクセスがDNTをセットしてるか分かるっていう メリットも出てきますね。 アクセスしたURLに勝手にパラメータがつくっていうデメリットもありますが、 手段の一つとしてはいけるかと思います。奥の手として使わしてもらうかもしれません。 理想はApacheでHTTPヘッダーの内容でmod_usertrackの設定を切り替えることなんですが DNTヘッダーは最近出てきたものなので、シンプルで簡単に実現するのは無理なんですかねぇ。