携帯の個体識別番号や特定IPでアクセス先をリライトする方法




WEBサービスを運営していると、特定の端末だけ処理や表示を変えたい時ってあると思います。

例えば、テスト環境へのアクセスをデバック機だけ許可するとか、本番環境をメンテナンスするために、世間的にはメンテナンスページを表示して、自社のIP帯域だけは確認のために通常のページを表示する時とか。

そんな時、apacheなどの設定ファイルや.htaccessなどにリライト処理を入れることで、簡単に設定することができます。
※apacheの場合は、mod_rewriteがインストールが必要です。

携帯の個体識別番号でリライトする方法

User-Agentがガラケーの場合、特定のUID(個体識別番号)を持つ端末以外を、任意のURLに301リダイレクトさせます。

EZWEBの場合、HTTPヘッダに「x-up-subno」が含まれていますので、それを拾います。

SoftBankの場合も同様に、HTTPヘッダ中の「x-jphone-uid」を利用します。

DoCoMoの場合は2通りあって、
①公式サイトの場合は、uid=NULLGWDOCOMOをGETパラメータに付加することで、ドコモゲートウェイ側でユーザーIDが置換されますので、それを利用します。
②非公式サイトの場合は、同じくGETパラメータにguid=onを付加することで、HTTPヘッダ中に「x-dcmguid」が含まれるようになるので、それを利用します。

リライトの設定は、以下のような感じで。
[perl]RewriteCond %{HTTP_USER_AGENT} ^(DoCoMo|KDDI|DDIPOKET|UP?.Browser|J-PHONE|Vodafone|SoftBank)
RewriteCond %{HTTP:X-UP-SUBNO} !^***************.ezweb.ne.jp$
RewriteCond %{HTTP:X-JPHONE-UID} !^*************$
RewriteCond %{QUERY_STRING} !uid=**********
#RewriteCond %{HTTP:X-DCMGUID} !^*******$
RewriteRule ^/(.*)$ http://(リライト先URL)/$1 [R=301,L]
[/perl]

特定のIPでリライトする方法

User-Agentがガラケー以外の場合、特定のIPアドレス以外からのアクセスを、設定したリライト先URLに301リダイレクトさせます。

[perl]
RewriteCond %{HTTP_USER_AGENT} !^(DoCoMo|KDDI|DDIPOKET|UP?.Browser|J-PHONE|Vodafone|SoftBank)
RewriteCond %{REMOTE_ADDR} !^(あなたの環境のIPアドレス)
#RewriteCond %{REMOTE_ADDR} !^(あなたの環境のIPアドレス2)
RewriteRule ^/(.*)$ http://(リライト先URL)/$1 [R=301,L]
[/perl]

今さらガラケーなんてとは言わず、サイトがどんどんスマホナイズされてるので、逆にライバルが減ってます。
テスト環境のセキュリティ強化や、メンテナンス時なんかに利用しましょう。


この記事が気に入ったら
いいね!してね

最新情報をお届けします!