access_logの携帯対応のさせ方(個体識別情報記録)

総閲覧回数:4,246,883回 / ブログ拍手:2,821
作品DB等各サービスの機能追加情報や、技術系・面白系記事を中心に提供。
記事の投稿は基本Twitterでも告知させて頂いています。
連絡は作品DBの論客の方なら私書、DB外ユーザの方ならメールTwitterで可能です。
アクセス記録[推移 / PV内訳(過去1日 / 過去1週間) / 外部アクセス元 (昨日 / 過去1週間) / ログイン論客足跡]
プロフィール私書(メール)
   /   /送済
評価(一覧   /)
投票   /共:   /
ファン登録
作品/情報/
DB構築()
ブログ
[書く]
攻略記事リンク集
My Play List
RSS購読
RSS
表示開始年月
分類
全て
1.このサイトについて
2.作品DB開発/運用
3.ホームページ制作技術
4.Perl
5.C言語 / C++
6.検索エンジン&SEO
7.サッカー
8.自分のこと
9.Linux
10.旅行
11.思ったこと
12.パソコン
13.Berkeley DB
14.その他技術系
15.企画
16.スマートフォン
17.鑑賞
18.皆声.jpニュース
19.インターネット業界
20.運用マニュアル(自分用)
21.技術系以外実用書
22.料理
23.ALEXA
24.アニメ
25.会計
26.漫画
27.設計書
28.色々サイト作成
29.サーバー
30.自分専用
31.生活
32.OP/ED/PV
33.ゲーム
34.DB整備
35.新規開始作品紹介
36.英語圏の話題
37.大道芸
38.映画
39.PHP
40.ダイエット
41.Mac
42.JavaScript
43.MySQL
44.介護
45.作品DB作品追加作業
46.BI
47.Web API
48.パフォーマンス
49.インターネットの活用方法
50.Riak
51.Androidアプリ開発
52.Cassandra
53.スパム
54.写真
55.iOSアプリ開発
56.AWS
57.マーケティング
58.Web漫画
59.法律
60.mongodb
61.開発環境整備
62.Google Apps Script
63.meteor
64.Pentaho
65.Ansible
66.VPS
67.技術書メモ
68.Vagrant
69.Docker
70.dokuwiki
71.Apple Watch
72.Webサービス
73.セキュリティ
74.Elastic Search
75.Wordpress
76.クラウド
77.英語
78.MVNO
79.シンガポール
80.マレーシア
81.海外生活
82.海外旅行
83.創作活動
84.コワーキングスペース
日記の主な内容
サイト運営/開発
検索エンジン情報
・技術ネタ(Berkeley DB,
Linux, Perl, サイト作成)等

サイト管理
全まとめ
サーバー管理
定期処理状況
開発予定
削除提案
作品追加依頼
OP/ED追加依頼
OP/ED not found
作品提案承認欄

格言 fromスクライド
この世の理は即ち速さ
20年かければ馬鹿でも
傑作小説を書ける

助けられたら助け返す
それが俺のルール

強くなるには
一番弱い考えをする事だ
そしてその考えに反逆する




右側に何か入れてみるテスト


仕事でのサイト
介護DB
Helpyou
Doctor career
Nurse career
<=次の記事 皆声.jp::常時更新の「検索語ランキング with 関連話題ニュース&ブログ」を公開
=>前の記事 文字::文字の標準化処理(全角→半角、半角→全角)

1.
2010/02/18 同日3番目 Linux > Apache > access_logの携帯対応のさせ方(個体識別情報記録)」
[この書込みのみ表示(記事URL紹介用) / 編集 / 削除 / トラバ送信 / 共有分類に追加(タグ付け)]

1. 携帯識別ID
2. httpd.confの内容
3. その他考えるべき事

1. 携帯識別ID

携帯からのアクセスはIPが可変&重なる為、IPでのユーザー計測が出来ません。
その為、ユーザーを認識するには、携帯識別IDを取得する必要があります。
その携帯識別IDをapacheのaccess_logに記録する設定方法をメモで書いておきます。
2. httpd.confの内容

httpd.conf
LogFormat "%h\t%l\t%u\t%t\t\"%r\"\t%>s\t%b\t%v\t%I\t%O\t%T\t\"%{Referer}i\"\t\"%{User-Agent}i\"\t\"%{X-Up-Subno}i\"\t\"%{x-jphone-uid}i\"\t\"%{X-DCMGUID}i\"\t\"%{x-em-uid}i\"" combined

...

<IfModule mod_rewrite.c>
RewriteEngine On
...
RewriteCond %{REQUEST_METHOD} GET [NC]
RewriteCond %{HTTP_USER_AGENT} "^DoCoMo"
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^(.*?)$ $1?guid=ON [R=302,L]

RewriteCond %{REQUEST_METHOD} GET [NC]
RewriteCond %{HTTP_USER_AGENT} "^DoCoMo"
RewriteCond %{QUERY_STRING} !^$
RewriteCond %{QUERY_STRING} !guid=ON
# 拡張子は環境に合わせて
RewriteRule ^([^\?]+?\.(?:asp|cgi)) $1?%{QUERY_STRING}&guid=ON [R=302,L,NE]
...
</IfModule>

ログ形式の意味するところ
X-Up-SubnoAU
x-jphone-uidSoftbank
X-DCMGUIDDoCoMo
x-em-uidE-Mobile
なお、ログの各項目は、デフォルトの半角スペースではなくタブ(\t)で分けることで、後で処理しやすくなるようにカスタマイズしています。

DoCoMoはURLにguid=ONを付けると識別IDを渡すようになるので、mod_rewriteでguid=ONが付いていない時には、付けるようにリダイレクト。
その際、Apache内部リダイレクトではなく、Apache外部リダイレクトの場合、QUERY_STRINGの部分が更にURLエスケープされて変になってしまわないように、NE(=No Encode)オプションを付ける。
逆にファイル名だけで終わっているものには、NEオプションは付けない。NEを付けるとファイル名の%の部分がエスケープされず、Not Foundになってしまう(ファイル名の%はURLでのアクセスではエスケープ対象文字)。

POSTのリクエストは<form action="...cgi?guid=ON">とHTMLの方で先に書いていないといけません。
POSTにリダイレクトでguid=ONを付けてしまうと情報が失われてしまうので、GETの時だけguid=ON付けがされるようにしています。
3. その他考えるべき事

基本的にリダイレクトが挟まるのは、2回リクエストの処理をするという点で、サーバーにとってもクライアントにとってもリソースの無駄なので、携帯版の方は出来るだけguid=ON付のパスに最初からしておく方が負荷上は良いでしょう。
URLの綺麗さや、検索エンジンや既存リンクとの関係等負荷以外のことも考えると、どこまで付けるか(携帯版は全部そうする?PC版はどうする?)は考える所も出てきますが。

コメントする


[他の記事も読む]
<=次の記事 皆声.jp::常時更新の「検索語ランキング with 関連話題ニュース&ブログ」を公開
=>前の記事 文字::文字の標準化処理(全角→半角、半角→全角)


大分類が「Linux」の記事
この論客の記事全て
↑上へ