PCサイトとスマートフォンサイトを分けてデザインしたい場合のリダイレクト実装方法
どーも@PNRAです!
いまさら?って感じのタイトルですが、意外とオーダー頂くことの多いPCサイトとスマートフォンサイトを別に作るというオーダー
確かにRWD(レスポンシブウェブデザイン)だと、どうしてもデザイン的成約や制限がかかってくるためそれぞれ分けて作りたい気持ちも分からなくない。
そこで今日は閲覧環境毎にリダイレクトするディレクトリ分岐型サイトをPHPで実装するための方法をまとめておこうと思います。
実装方法
STEP01:サイトを2つ用意する。
まずはPCサイトとスマートフォンサイトの2つを用意します。
それぞれ
PC:http://www.yourownwebsite.com/
smartphone:http://www.yourownwebsite.com/sp/
とします。
今回はPCサイトにスマートフォンでユーザーが訪れた場合、自動的にスマートフォンサイトにリダイレクトするというシンプルな内容にします。
STEP02:リダイレクト用のPHPを作る。
リダイレクト用のPHPファイルをagent.phpとします。
http://www.yourownwebsite.com/を構成するPHPファイルの<header>内に<?php include ‘../agent.php’; ?>を記載します。
<agent.phpの読み込み>
<header>
//header内容割愛
<?php include '../agent.php'; ?>
//includeを加えることで先にこのPHPファイルを読み込ませる
</header>
agent.phpの中身はこちら
<agent.php>
<?php
session_start();
#リダイレクト先の指定(wwwは付けない)
$http = 'http://';
$lacationSP = 'yourownwebsite.com/sp/';
$lacationPC = 'yourownwebsite.com/';
#リクエストしたURL
$requestedURL = $_SERVER["HTTP_HOST"] . $_SERVER['SCRIPT_NAME'];
#wwwのありなし判定
if ( strpos($requestedURL,'www') === 0 ) {
$lacationSP = 'www.' . $lacationSP;
$lacationPC = 'www.' . $lacationPC;
}
#user_agent取得(デバイス判別)
$agent = $_SERVER["HTTP_USER_AGENT"];
if ( (strpos($agent,'iPhone')!==false) || (strpos($agent,'Android')!==false) ) {
$device = 'sp';
} else {
$device = 'PC';
}
#リダイレクト実行
if ( $device == 'PC' && $requestedURL == $lacationSP ) {
header("Location: ". $http . $lacationPC);
} elseif ( $device == 'sp' && $_SESSION[ 'sp' ] != 'PC' && $requestedURL == $lacationPC ) {
header("Location: ". $http . $lacationSP);
}
?>
これで実装は完了です。
上記の内容を簡単に説明していくと、$_SERVER[“HTTP_USER_AGENT”]で閲覧デバイス情報を読み込ませます。
読み込んだデバイス情報が、iPhone、及びAndroidだった場合は、http://www.yourownwebsite.com/sp/へ。
それ以外をhttp://www.yourownwebsite.com/へ飛ばす。
といった指示内容になっています。
ここをいじくれば、ブラウザ毎の指定などもできるのですが、あまり使わないので割愛します。
とまぁ、こんなところです。
それではまた次回( ´•౪•`)
Siyabonga ekufundeni kwakho.(訳:最後まで読んでくれてありがとう。 / 注:ズールー語)