Home > Mobile > 携帯からのアクセスだけリダイレクトさせる

携帯からのアクセスだけリダイレクトさせる

単純に『携帯からと思われるアクセス』だけ、リダイレクトかけたいとする。

例えば、
PCページが『http://aaa.bbb.com/pc/aaa.html』として
携帯なら『http://aaa.bbb.com/mobile/aaa.html』に移動したいというような場合だ。

IPアドレスで仕分るのが一番いいんだけど、
機種増える度に追加したり、
DoCoMoの2.0ブラウザなんて変更しよるから管理するのタルイし
公式化や、会員制とかにしなくていいなら
『USER AGENT』で判断するのをオススメする。
※mod_rewrite必須

※USER AGENTについては、過去記事『USER AGENTメモ』参照のこと

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_USER_AGENT} "DoCoMo" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "J-PHONE" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "Vodafone" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "SoftBank" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "KDDI" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^MOT-.* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "UP.Browser" [NC]
RewriteCond %{HTTP_USER_AGENT} "DDIPOKET" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^SAMSUNG.* [NC,OR]
RewriteRule ^(.*)$ /モバイル用ディレクトリ/$1 [R,L]
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_USER_AGENT} ^(DoCoMo|KDDI|DDIPOKET|UP\.Browser|J-PHONE|Vodafone|SoftBank|SAMSUNG)
RewriteRule ^(.*)$ /モバイル用ディレクトリ/$1 [R,L]


キャリア別に移動するページを変えたいならば

RewriteCond %{HTTP_USER_AGENT} "DoCoMo"
RewriteRule ^(.*)$ /DoCoMo用ディレクトリ/$1 [R,L]

RewriteCond %{HTTP_USER_AGENT} "J-PHONE" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "Vodafone" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "SoftBank" [NC,OR]
RewriteRule ^(.*)$ /Softbank用ディレクトリ/$1 [R,L]
	(略)

のように『RewriteCond』と『RewriteRule』を繰り返せばいい。


ここで注意すべきは
『http://aaa.bbb.com/aaa.html』から
『http://aaa.bbb.com/mobile/aaa.html』に
移動しようと上記を書くと、
『http://aaa.bbb.com/mobile/mobile/mobile/mobile/mobile/mobile/(以下略)』
のように、延々ループを繰り返してしまう。


因みに

RewriteRule ^(.*)$ /モバイル用ディレクトリ/$1 [R,L]

RewriteRule ^(.*)$ /モバイル用ディレクトリ/moba.html [R,L]

とすれば、固定ページに、

RewriteRule ^(.*)$ http://モバイルサイト/$1 [R,L]

とすれば、別のアドレスに移動になる。


リモートのホスト名は、偽装出来ないそうなので

RewriteCond %{REMOTE_HOST} ^docomo\.ne\.jp$ [NC]
RewriteCond %{REMOTE_HOST} ^ezweb\.ne\.jp$ [NC]
RewriteCond %{REMOTE_HOST} ^(jp-d\.ne\.jp|jp-h\.ne\.jp|jp-t\.ne\.jp|jp-c\.ne\.jp|jp-k\.ne\.jp|jp-r\.ne\.jp|jp-n\.ne\.jp|jp-s\.ne\.jp|jp-q\.ne\.jp)$ [NC]

というのも有りだろうけど
サーバによっては取れないこともあるらしい。

ので

RewriteCond %{REMOTE_HOST} ^docomo\.ne\.jp$ [NC,OR]
RewriteCond %{REMOTE_ADDR} ^210\.153\.84\.*
RewriteCond %{REMOTE_ADDR} ^210\.136\.161\.*
RewriteCond %{REMOTE_ADDR} ^210\.153\.86\.*
RewriteCond %{REMOTE_ADDR} ^124\.146\.174\.*
RewriteRule ^(.*)$ /DoCoMo用ディレクトリ/$1 [R,L]

とするのも有りだけど、
allow from を1個1個設定しておくのと手間がかわらないね。


別のアドレス(どのキャリア・どのページからでも同じページ)に移動させるだけならば、

SetEnvIf User-Agent "J-PHONE" sb
SetEnvIf User-Agent "SoftBank" sb
SetEnvIf User-Agent "Vodafone" sb
SetEnvIf User-Agent "MOT" sb
SetEnvIf User-Agent "DoCoMo" dcm
SetEnvIf User-Agent "KDDI" au
SetEnvIf User-Agent "UP.Browser" au

Order Allow,Deny
Allow from all

Deny from env=sb
Deny from env=dcm
Deny from env=au

でアクセスを拒否しておいて

ErrorDocument 403 『表示させたいURL』

としておくのが楽。


リダイレクトする方法は他に
mod_aliasが必要だけど

Redirect permanent 『アクセス対象ファイル名』 『移動先URL』

というのがあって
『SetEnvIf』と組み合わせれば、方法はありそうだけども
まぁ、何か出来ない


※参照

調べては閉じてを繰り返してたから、もうどこをどう参考にしてたもんだか…


因みに飛ばすときは『300』で飛ばすと、DoCoMo端末だと『ページが移動しました』て出てくるんで、『301』で飛ばすようにしよう


関連する投稿

Comments:0

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://qooga.jb-jk.net/wp/2009/11/%e6%90%ba%e5%b8%af%e3%81%8b%e3%82%89%e3%81%ae%e3%82%a2%e3%82%af%e3%82%bb%e3%82%b9%e3%81%a0%e3%81%91%e3%83%aa%e3%83%80%e3%82%a4%e3%83%ac%e3%82%af%e3%83%88%e3%81%95%e3%81%9b%e3%82%8b/trackback/
Listed below are links to weblogs that reference
http://qooga.jb-jk.net/wp携帯からのアクセスだけリダイレクトさせる from MOT:主にプログラム勉強メモ部屋

Home > Mobile > 携帯からのアクセスだけリダイレクトさせる

Search
Option
  • Twitter
  • 絵板
Feeds
commercial
Mobile
Meta
Tag Cloud
TOP10
commercial

Return to page top