最近、スマートフォンサイトの制作が急激に増えてきました。
スマフォサイトを公開後に必ず必要になってくるリダイレクトですが、全てスマフォサイトのトップに転送するだけなら簡単なのですが、同じページに転送してあげたほうが親切ですよね。
そこで、PHPでPCサイトにアクセスしたときにディレクトリだけ違うスマートフォンサイトにリダイレクトした際に自動でURLを変更して転送する方法を紹介!

PHPでアクセスしている端末のユーザーエージェントを取得してiPhoneやAndroidを判別する方法は以下のサイトを参考にしました。
Web サイトのスマートフォン最適化: UA 判別篇

PCサイトのURLを自動で変更してスマートフォンサイトにリダイレクトする方法

PCサイトURL:http://hogehoge.com/
スマフォサイトURL:http://hogehoge.com/sp/
へリダイレクトする場合

ファイル名も同じにしないとうまくリダイレクトできません。

ob_start は、ファイルの一番最初に書いてください。
なくても良いのですが、header()は「なにか表示した後」に動作させようとすると動きませんので、ページの途中で動作させたい場合は必ず先頭に書いてください。


ob_start();

function is_mobile () {
    $useragents = array(
      'iPhone',         // Apple iPhone
      'iPod',           // Apple iPod touch
      'Android',        // 1.5+ Android
      'dream',          // Pre 1.5 Android
      'CUPCAKE',        // 1.5+ Android
      'blackberry9500', // Storm
      'blackberry9530', // Storm
      'blackberry9520', // Storm v2
      'blackberry9550', // Storm v2
      'blackberry9800', // Torch
      'webOS',          // Palm Pre Experimental
      'incognito',      // Other iPhone browser
      'webmate'         // Other iPhone browser
    );
 
   $pattern = '/'.implode('|', $useragents).'/i';
    return preg_match($pattern, htmlspecialchars($_SERVER['HTTP_USER_AGENT']));
}


$array = parse_url(htmlspecialchars($_SERVER["REQUEST_URI"], UTF-8));
$sp_url = 'http://' . htmlspecialchars($_SERVER["HTTP_HOST"]) . '/sp' . $array[path];

if (rd_is_mobile()) {
 header( "Location: " . $sp_url); 
}


スマフォサイトをデザインするときに参考になるデザインを集めたサイトを運営していますのでよかったらスマートフォンサイトをデザインするときに参考にしてみてください。
また、初心者でも分かるスマートフォンサイト制作のまとめもありますので参考にしてください。