• ベストアンサー

apacheのmod_usertrackとDNT

Apacheでmod_usertrackを使ってトラッキングクッキーをセットしています。 最近FireFoxなどでトラッキングの拒否を設定できるようになり HTTPリクエストヘッダーに DNT:1 という項目が追加されるようになりました。 このDNTが送られてきた場合、トラッキングをしないようにしたいのですが Apacheの設定でそれを実現することは出来るでしょうか? トラッキングにmod_usertrackを使ってはいますが、 もし他にも同じ機能があるならそれに変更することは可能です。

質問者が選んだベストアンサー

  • ベストアンサー
  • dscripty
  • ベストアンサー率51% (166/325)
回答No.4

URL を多重化するまでもなくて、 クエリストリングで十分か! あとは、クエリストリングで、 CookieTracking の on|off をすればできるきがする。 そにまえに、DNT:1 のときに ?someflag にリダイレクトしておしまい。

miyamura200000
質問者

お礼

ご検討ありがとうございます。 ?someflagがあるときにmod_usertrackが機能する(もしくは機能しない)ようにするということですね? で、someflagがセットされているときはログを取らないようにして2アクセスに見えないようにすると。 あえて2アクセスログングされるようにしたらどれだけのアクセスがDNTをセットしてるか分かるっていう メリットも出てきますね。 アクセスしたURLに勝手にパラメータがつくっていうデメリットもありますが、 手段の一つとしてはいけるかと思います。奥の手として使わしてもらうかもしれません。 理想はApacheでHTTPヘッダーの内容でmod_usertrackの設定を切り替えることなんですが DNTヘッダーは最近出てきたものなので、シンプルで簡単に実現するのは無理なんですかねぇ。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (5)

  • dscripty
  • ベストアンサー率51% (166/325)
回答No.6

そのうち mod_usertrack に DNT:1 がインプリされそうな気がするけど、急ぎなら自分でソースを改変したほうが早いかも。

miyamura200000
質問者

お礼

私もそんな気がします。 急ぎでも必須というわけでもなく、世の中の流れがそんな雰囲気なので 先に対応しておければベストかと思い投稿させてもらいました。 いろいろご検討いただきありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • dscripty
  • ベストアンサー率51% (166/325)
回答No.5

「これだとアクセスログには2つ残ってしまわな いですか? 」 再掲載 「CustomLog ディレクティブはサーバへのリク エストを ログ収集するために使われます。ログ の書式が指定され、 環境変数を使ってロギング が条件に応じて行なわれるようにすることもで きます。」

全文を見る
すると、全ての回答が全文表示されます。
  • dscripty
  • ベストアンサー率51% (166/325)
回答No.3

あまりきれいじゃないけど。。。 回避方法その一。 トラッキングする(CookieTracking on)通常の URL と DNT:1 専用(CookieTracking on|off)の URL を一つずつ用意する。 参照先のコンテンツは同じ。 DNT:1 がセットさせているかどうかで、mod_rewrite して、 DNT:1 専用の URL に転送させる。 ドキュメントには、link rel="canonical" を入れて検索エンジンの重複判定を避ける。 かな?

miyamura200000
質問者

補足

早速のご検討ありがとうございます。 mod_rewriteの動きをちゃんとわかっていないのですが、 これだとアクセスログには2つ残ってしまわないですか? そうだとこの方法は採用できないんです。 最初の質問に書いておくべき内容だったと思いますが、 各ドキュメントには一切変更を加えないことが条件になります。 各ドキュメントを修正するならJavaScript作ってそれを読みこませればこの要件は実現できるので。 ご検討いただいた方法なら確かにトラッキングクッキーをセットするしないの制御が可能かと思いますが、 目的はトラッキングIDを仕込んでのアクセスログ解析にあるので、変更によってアクセスが増えたり ドキュメントを修正することは出来ないんです。

全文を見る
すると、全ての回答が全文表示されます。
  • dscripty
  • ベストアンサー率51% (166/325)
回答No.2

「このDNTが送られてきた場合、トラッキングをしないようにしたい」 ↓ 『トラッキングの結果(log)を残さなない』って読んじゃった。。。 「トラッキングクッキーを返さない」 が、やりたいことなら、 トラッキングされているとユーザに意識させないってことだから、 まったく「やりたいことが違う」とおもう。 すこし興味があるから、時間のあるときに、もうちょっと調べてみるけど、 先にわかって、もし、気が向いたら補足に説明を残してくれるとうれしい!

全文を見る
すると、全ての回答が全文表示されます。
  • dscripty
  • ベストアンサー率51% (166/325)
回答No.1

参考になるといいけど。。。 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 です。リクエストヘッダの集合を現すために 正規表現を使うこともできます。」

miyamura200000
質問者

補足

ご回答ありがとうございます。 私の読み違いでなければ残念なことに少しやりたいことが違うようです。 やりたいことはヘッダーにDNTが含まれるアクセスの応答にトラッキングクッキーを返さない方法です。 mod_log_configはログのフォーマットを変える方法ですよね? これではDNTが設定されていた時にログを取らない、フォーマットを変更するということは出来ると思いますが、 クライアントブラウザにはトラッキングクッキーが送られてしまいます。 SetEnvIfは条件により環境変数をセットするものであり、 Apacheの設定の有効/無効を切り替えることは出来ないようです。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ApacheでのHTTPヘッダーの編集

    ApacheでのHTTPヘッダーの編集についてご質問いたします。 Response HeaderのServerフィールドに新規に値を設定したいのです が、どうもうまくいきません。何か方法はあるのでしょうか? 具体的にいいますと、現状は Server:Apache… となっていますが、新たに"Value"を追加し Server:Apache…/"Value" または Server:Apache… Server:"Value" というようなヘッダーを生成したいと思っています。 (ちなみにIISだと簡単にできました。) なお、mod_headerモジュールは組み込まれております。 よろしくお願いいたします。

  • HTTPリクエストヘッダーの設定と遷移

    1.HTTPリクエストヘッダーって、任意の項目名で値を設定する事ができるのでしょうか?   その場合、どのような設定方法(タグ?)になるのでしょうか。 2.HTTPリクエストヘッダーにある情報を設定し、   そして、そこから別のページに遷移しその別のページで、遷移前に設定していた   HTTPリクエストヘッダーの情報を読み込みたいのですが、実現可能でしょうか?   また可能な場合、例えば、Javascript、HTMLなんかを利用して可能でしょうか? 初歩的な事かも知れませんが、よく分からず困ってます。 よろしくお願いします。

    • ベストアンサー
    • HTML
  • httpsでmod_rewriteができない

    はじめまして。 Linux環境で、apacheのhttp.confにmod_rewriteを記載し、httpsとhttpを切り替えたいと思っています。 httpd.confに以下のように記述しています。 <IfModule mod_rewrite.c> RewriteEngine on  #(1)httpで/aaaa/bbbbにアクセスされたときにhttps://~に変えたい RewriteCond %{REQUEST_URI} ^/aaaa/bbbb RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R]  #(2)httpsで/cccc/ddddにアクセスされたときにhttp://~に変えたい RewriteCond %{REQUEST_URI} ^/cccc/dddd RewriteCond %{HTTPS} on RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R] </IfModule> 上記(1)のhttpでのアクセス時には、mod_rewriteが効いてhttpsへ切り替えられるのですが、 上記(2)のhttpsでのアクセス時には、mod_rewriteが効いていないようでhttpへ切り替えられません。 rewriteログを見てみると、当サイトへhttpでアクセスした場合にはログが出力されますが、 httpsでアクセスした場合には出力されません。 そもそもhttpsでのアクセスの場合にhttpd.confのmod_rewriteが効いていないようです。 ですが、これに対しどこを調査すべきかが分かっていません。 SSLの設定自体は出来ていると思っていて、 https://xxxx.jpのようにアクセスするとちゃんとページが表示されます。 どの当たりに問題がありそうでしょうか? 解析のヒントを頂けたらと思います。 宜しくお願い致します。

  • Apacheのmod_rewriteでURLの書き換え

    Apacheのmod_rewriteでURLを書き換えたいと思います。 ルートデイレクトリは"C:/Program Files/Apache Group/Apache2/htdocs"です。   そして、http://localhost/sample/ と打ったときに、"C:/Program Files/Apache Group/Apache2/htdocs/sample"ではなく、"C:/tmp/test"にアクセスされるようにするには、httpd.confにどのような設定を追加すればよいのでしょうか? Apache 2.0.63 Windows Vista

  • mod_rewriteの環境変数を埋め込みたい

    お世話になります。 現在、以下の環境でWebアプリケーションを開発しています。 CentOS5.4 Apache2.2.3 Tomcat7 JavaSE6 ApacheとTomcatの連携にmod_proxy_ajpモジュールを使用しています。 ただ、クライアントからアクセスするURLと連携先のURLが異なるため、Java側でHttpRequestからコンテキストパス以降を取得するとajp連携されたパスしか取得できず、クライアントがアクセスしたURI情報が取得できません。 これを対策するために、Apacheモジュールのmod_rewriteとmod_headersを利用して、 クライアントがアクセスしたURIをリクエストヘッダに埋め込もうとしています。 以下httpd.confに追加した設定です。 (rewrite.confも試しました) RewriteEngine On RewriteRule .* - [E=ORG_QUERY_STRING:%{QUERY_STRING}] RequestHeader append "test_query_string" %{ORG_QUERY_STRING}e 設定後、Apacheを再起動してWebアプリケーションにアクセスすると、リクエストヘッダ自体は追加されているのですが値が(null)となってしまい取得できません。 mod_rewriteの環境変数が取得できていないのかと思い、 RewriteRule .* - [E=ORG_QUERY_STRING:TEST] と固定文字列を埋め込んでも取得できませんでした。 このことからENVによる環境変数への設定、または参照が出来ていないのかと思われますが、どうにも解決できません。 参照時に RequestHeader append "test_query_string" %{ENV:ORG_QUERY_STRING}e としても同様の結果でした。 心当たりのある方、またはデバッグ方法や別解などアドバイスを頂けないでしょうか? なお、httpd.confではmod_rewrite、mod_headersのモジュール定義は有効となっております。 また、環境変数のスペルミスもコピペして確認しております。

  • mod_rewriteについて

    初めて質問させていただきます。 よろしくお願いします。 Solaris8にてApacheを動かしています。 【問題】「HTTP TRACE」を拒否するためにmod_rewriteモジュールをインストールしようと思うのですがうまくいきません。 【詳細】mod_rewriteをインストールするとmod_soが消えてしまい、mod_soを入れなおすとmod_rewriteが消えてしまいます。  ./configure --enable-module=so --enable-module=rewrite とすると両方が入るみたいなんですが、 /usr/local/apache/bin/apachectl startssl としても、  Syntax error on line 206 of /usr/local/apache/conf/httpd.conf: Cannot load /usr/local/apache/libexec/libssl.so into server: ld.so.1: /usr/local/apache/bin/httpd: 重大なエラー: 再配置エラー: ファイル /usr/local/apache/libexec/libssl.so: シンボル ap_global_ctx: 参照シンボルが見つかりません。 /usr/local/apache/bin/apachectl startssl: httpd could not be started と、こんなエラーが出てhttpdがスタートできません。 どこに原因があるためのエラーなのでしょうか??

  • Apacheのmod_rewriteに関してお

    Apacheのmod_rewriteに関してお教えください。 お世話になります。 色々なサイトを参考に試していますが、思う様にいかず困っています。 知恵をお借り頂けたらと存じます。 ・「mod_rewrite」を利用したメンテナンス画面の表示。 ・「F5」等で更新した際、本来の画面が表示される様、内部的な置き換えのみとしたい。 ・使用しているWebサーバは(Apache2.2系) ・「mod_proxy_ajp」を利用したコネクタ連携を行っている。 ・ホスト名によるバーチャルホスト ・configファイルに記載する方法で試し中 ・メンテ用html メンテナンス用htmlは、別途指定した「DocumentRoot」に配備しており、 同ディレクトリにイメージファイル格納用フォルダがある。 そのフォルダ内にimgファイルが配備されている。(pngファイル等) DocumentRoot Lhtmlファイル L格納フォルダ\イメージファイル 現在、Apacheの機能に関して勉強中です。 メンテナンス用画面表示用として、例えば色々なサイトに有るような、以下記載をしたとします。 --------- RewriteCond %{REQUEST_FILENAME} !(/メンテナンス画面.html|.*\.(gif|jpe?g|png|js|css|ico))$ RewriteRule ^(.*)$ /メンテナンス画面.html [R=503,P,L] --------- 「http://ホストIP/」等でアクセスした場合、ドキュメントルートを参照、意図した動きとなるのですが、 「http://ホストIP/^ユーザディレクトリ/」や、「http://ホストIP/Aliasディレクトリ/」等 一階層深いURLだった場合、メンテ用htmlは、表示されるのですが、参照イメージファイルがパス違いにより 参照出来なくなり、意図した動きとなりません。 ※ 「http://ホストIP%{REQUEST_URI}」配下を参照しようとしている。(RewriteLogより) 「RewriteRule ^(.*)$」だと全てになってしまう為、ルールを分け設定してみましたが 第3引数の指定が悪いのか設定した「RewriteRule」を全て参照し「RewriteCond」が動いてしまう。 引数や正規表現の問題だとは考えておりますが、なかなか正解に辿り着けません。 よろしくお願いします。

  • IIS7.5でHTTPリクエストヘッダを追加

    IIS7.5でHTTPリクエストヘッダを追加するにはどうしたらよいのでしょうか? 応答ヘッダーは、追加できるのですが、リクエストヘッダの追加方法がわかりません。 よろしくお願いします。

  • HTTPのExpiresヘッダーについて教えてください。

    HTTPのExpiresヘッダーについて教えてください。 画像が多いサイトを運営していて、リクエストの数を減らすためにExpiresヘッダーを追加しました。 僕の予想としては、一度キャッシュされればCache-Controlのmax-ageの期間はリクエストが上がらないと思っておりました。 実際、FirefoxのFirebugで確認をするとリフレッシュするたびにリクエストが飛んでいました。 WebサーバはIISを使用しており、EtagとExpiresが両方レスポンスされていたので優先順位の問題かと思いApacheでEtagを出さない設定にして試してみても同じ状況になってしまいます。 僕の理解としてはExpiresとCache-Controlを付ければ、有効期限の間はキャッシュを使用してリクエストは飛ばないと思っていました。 調査するにも行き詰まっており、何かヒントがいただければと思います。 よろしくお願いいたします。

  • mod_rewrite の記述について

    .htaccess に、mod_rewrite の記述を書いて、以下のようなことをしたいのですが、 1.http://www.example.com/abc/ の場合 URLはそのままで、内容は /main/abc/以下 (の同名ファイル)を表示 2.http://www.example.com/main/abc/ の場合 URLは http://www.example.com/abc/ になり、内容は/main/abc/を表示 以前教えていただいた以下の記述でできるのですが、ディレクトリが追加されたら、.htaccess にも追加が必要になってしまいます。 どのように実現すればよいでしょうか? ------------------------------------------------------------ RewriteCond %{REQUEST_URI} ^/main/(.*)$ RewriteCond %{HTTP:My_Redirect} !yes RewriteRule ^main/(.+)$ http://example.com/$1 [QSA,R] RewriteCond %{REQUEST_URI} ^/(abc|aaa|bbb|ccc|ddd)/ RequestHeader set My_Redirect yes RewriteRule ^(.*)$ /main/$1 [QSA,L] ------------------------------------------------------------