スマートフォン/携帯振り分け方法

今更ではあるんですが、振り分けの方法をご紹介します。最近はスマートフォン用にも作らないといけない状況ではありますし、やはりこーゆうのがあるといいのかなと思いまして、使う機会があったのでご紹介しておきます。
ただ、どの機種がスマートフォンに値するかが問題でして、いろいろ調べてみたんですがこれで合っているかどうかはわからないのですが私なりに作って見ました。
今回2つのパターンをご紹介します。


スポンサーリンク

1.htaccessによるスマートフォン/携帯判別

.htaccessによる判別です。これは設置したディレクトリすべてが対象になります。どこからでも同じ所に導いてくれるので便利です。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
RewriteEngine On
 
# SmartPhone
RewriteCond %{HTTP_USER_AGENT} (iPhone|iPod|Android.*Mobile|Windows.*Phone|dream|blackberry|CUPCAKE|webOS|incognito|webmate) [NC]
RewriteRule ^$ http://php-fan.org/sp/index.html [R=301,L]
 
# DoCoMo
RewriteCond %{HTTP_USER_AGENT} ^DoCoMo
RewriteRule ^$ http://php-fan.org/i/index.html  [R=301,L]
 
# SoftBank
RewriteCond %{HTTP_USER_AGENT} ^(J-PHONE|Vodafone|SoftBank|MOT-)
RewriteRule ^$ http://php-fan.org/sb/index.html  [R=301,L]
 
# au
RewriteCond %{HTTP_USER_AGENT} ^(UP\.Browser|KDDI|PDXGW)
RewriteRule ^$ http://php-fan.org/au/index.html  [R=301,L]
 
# WILLCOM
RewriteCond %{HTTP_USER_AGENT} (DDIPOCKET|WILLCOM)
RewriteRule ^$ http://php-fan.org/i/index.html  [R=301,L]
 
#e-mible
RewriteCond %{HTTP_USER_AGENT} ^(emobile|Huawei|IAC)
RewriteRule ^$ http://php-fan.org/em/index.html [R=301,L]

RewriteRule ^$以降のURLをそれぞれ変えてやればそれぞれのサイトに飛んでいきます。

2.PHPによるスマートフォン/携帯判別

PHPによる判別です。設置した場所にしか判別してくれないという方法になります。必ず一番上に記述してください。htmlの中だとエラーになると思います。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
function mobile_redirect () {
 
	// 切り替え用URLです。falseにすれば対象を除外できます。
	$docomo = 'https://php-fan.org/i/';  // ドコモ
	$au     = 'https://php-fan.org/ez/'; // au
	$sb     = 'https://php-fan.org/sb/'; // SoftBank
	$sp     = false; // スマートフォン
	$mobile = false;  // モバイル端末
 
	$ua = $_SERVER['HTTP_USER_AGENT'];
	// ドコモ
	if (preg_match('/^DoCoMo/', $ua)) {
		$mobileredirect = $docomo;
	// au
	} elseif (preg_match('/^KDDI-|^UP\.Browser/',$ua)) {
		$mobileredirect = $au;
	// SoftBank
	} elseif (preg_match('#^J-(PHONE|EMULATOR)/|^(Vodafone/|MOT(EMULATOR)?-[CV]|SoftBank/|[VS]emulator/)#', $ua)) {
		$mobileredirect = $sb;
	// Willcom
	} elseif (preg_match('/(DDIPOCKET|WILLCOM);/', $ua)) {
		$mobileredirect = $willcom;
	// e-mobile
	} elseif (preg_match('#^(emobile|Huawei|IAC)/#', $ua)) {
		$mobileredirect = $em;
	// スマートフォン
	} elseif (preg_match('#\b(iP(hone|od);|Android )|dream|blackberry9500|blackberry9530|blackberry9520|blackberry9550|blackberry9800|CUPCAKE|webOS|incognito|webmate#', $ua)) {
		$mobileredirect = $sp;
	// モバイル端末
	} elseif (preg_match('#(^Nokia\w+|^BlackBerry[0-9a-z]+/|^SAMSUNG\b|Opera Mini|Opera Mobi|PalmOS\b|Windows CE\b)#', $ua)) {
		$mobileredirect = $mobile;
	// PC	
	} else {
		$mobileredirect = false;
	}
 
	return $mobileredirect;
 
}
$url = mobile_redirect();
if (false !== $url) {
	header('Location: ' . $url);
	exit;
}

自己確認用に残しておきます。

デモサイト

Pocket
LINEで送る

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です