読者です 読者をやめる 読者になる 読者になる

携帯用のサーバ設定、作業メモ

プログラミング

今回、サーバの再セットアップをして、そのメモ。
(ドコモ用勝手サイト)

携帯のアクセスのみ許可する

「.htaccess」で携帯キャリアをドメイン指定。
UAでも規制できるが、「.htaccess」作れるなら環境ならこっちの方が手軽。
↓の例では、ドコモ携帯のみ許可。
最初に全て拒否(deny from all)した後、許可したいドメインを1行で1件ずつ「allow from」していく。
他のキャリアやクローラーを入れたい場合、「allow from docomo.ne.jp」と同様に行を追加する。

order deny,allow
deny from all
allow from docomo.ne.jp

作成した「.htaccess」は、携帯でのみ見せたいディレクトリに設置する。

「.htaccess」自体については、「.htaccess実践活用術」参照。

PCでアクセスした人にQRコードを示す

「.htaccess」で指定したドメイン以外からのアクセス(≒PCからのアクセス)の場合、カスタムエラーページを表示するようには、「.htaccess」に次の1行を追加。

ErrorDocument 403 http://www.bousaid.dyndns.org/403.html

「403.html」のトコのファイル名は何でも良いんだけど、PCの人向けのメッセージを書いておく。
携帯でアクセスするためのQRコードを入れてあげるとなお良いかと。
こんな感じ。

smartyでSJIS出力

PHPの内部エンコーディングがEUCの場合、出力フィルタでSJISにしてもらうと楽になる。
ボキは↓のプラグインを使っている。
http://blog.b-shock.co.jp/pooza/2006/07/_smarty.html

PHPでSJIS出力

携帯の場合は基本SJISなので、いっそのこと出力フィルタで変換しちゃう手がある。
この場合、出力時は自分で文字コード変換しなくても、出力する際に自動でSJISに変換してくれるので、非常に楽である。
ただし、SJIS以外の出力をしたい場合にちょっと困る、それ以外にもいつか困ったことが起きそうな気がする諸刃の剣。
(なのでボキは使ってない)

php.ini

output_buffering = On
output_handler = mb_output_handler
mbstring.language = Japanese
mbstring.internal_encoding = EUC-JP
mbstring.http_input = auto
mbstring.http_output = SJIS
mbstring.encoding_translation = On

PHPで機種名取得

ボキはドコモ or PCしか判定しないので、緩やかな機種名取得(ドコモ or PC)を関数で使っている。

function getDeviceName(){
    $temp = @preg_split("/[\s|\(\)]/",$_SERVER['HTTP_USER_AGENT']);
    if(@count($temp) > 2 && @trim($temp[1]) != "") return trim($temp[1]);
    else return "PC";
}

↑は古すぎる機種は考慮していない。
3キャリでちゃんとやる場合、PEARのNet_UserAgent_Mobileを使うといいかもしれない。

AWStatsで携帯のアクセス解析

「AWStats」を使う場合、端末毎のアクセスを集計しようとしている人たちがいるらしく。
http://d.hatena.ne.jp/kuverawalk/
ボキは試してない。

「うごくひと」で携帯アクセス解析

「うごくひと」は「なかのひと」の携帯版。
携帯端末毎のアクセス数集計や、それを元にして「GPS対応率」「Flash対応率」など、色々と携帯独自の集計をしてくれる。
特に便利だな、と思ったのは、

  • 画面横幅,画面縦幅
  • GPS対応率
  • フルブラウザ対応率

かな。
あと、au対応のHPの場合、地域属性も集計してくれる。
IPから地域が判別できるのがauだけなのか、ドコモなどは未対応。

携帯アクセス解析の雑感

基本的に携帯はjsが使えない、アクセス毎にIPが変わるので、既存のOSSの恩恵を受けることが難しい。Google Analyticsも使えない。
ただし、高額なパケットキャプチャ式を使わなくとも、セッションIDやuidを使えば、リファラーとか経路分析的なことは可能で、例えばMOBYLOGはセッションID強制付加でやってるみたいだが、こうしたタイプのOSSもそのうち出てくると思うので、そこら辺に期待。

Googleウィブマスター ツール

Googleウィブマスター ツールでsitemapをcronで運用する場合。
サーバでPythonとCronが実行できる場合のみ。
基本的なことは全てgoogleのドキュメントに書いてある。

1.sitemap_gen.pyをダウンロードし、展開
2.example_config.xmlをコピーしてリネーム&編集
「sitemap_type」をモバイルにする
「filter」で携帯用のディレクトリだけ「pass」し、次の行で全て「drop」する。
「filter」で登録しない拡張子やディレクトリを「drop」する
以下、最小限のconfigファイル。



  ←携帯用ディレクトリ
  ←全て拒否
  ←拒否ディレクトリ
  ←拒否拡張子

3.実行テスト
↑で作ったファイル名が「config_mobile.xml」の場合

python sitemap_gen.py --config=config_mobile.xml

4.cronに登録

Firefoxでアクセス検証

firefoxで、UAを携帯にしてアクセスして表示を検証してみる。