前提
- 振り分ける必要があるのはPCとSPのトップページのみである
- 「/」にアクセスした時、SPなら「/sp」にリダイレクト
- 「/sp」にアクセスした時、PCなら「/」にリダイレクト
- 「/hoge」などへのアクセスには何もしない
- Viewに「index.blade.php」や「sp/index.blade.php」がある
動作環境
- Laravel 5.2.31
- CentOS 6.8
- PHP 5.6.22
.htaccessで振り分けれたらこんなこと書く必要はなかったんですが、
なかなか思い通りにいってくれないもので。。
記述
route.phpに次のように書きます。
Route::get('/', function(){
$ua = $_SERVER['HTTP_USER_AGENT'];
// user agent が iPhone か iPod か Android の場合
if( (strpos($ua,'iPhone') !== false) || (strpos($ua,'iPod') !== false) || (strpos($ua,'Android') !== false) ) {
return redirect('/sp'); // SP版TOPにリダイレクト
}
else { // user agent が それ以外 (例: iPad, PC) の場合
return view('.index'); // PC版TOPを表示
}
});
Route::get('/sp', function(){
$ua = $_SERVER['HTTP_USER_AGENT'];
// user agent が iPhone か iPod か Android の場合
if( (strpos($ua,'iPhone') !== false) || (strpos($ua,'iPod') !== false) || (strpos($ua,'Android') !== false) ) {
return view('.sp.index'); // SP版TOPを表示
}
else { // user agent が それ以外 (例: iPad, PC) の場合
return redirect('/'); // PC版TOPにリダイレクト
}
});
以上。get('/' ... のあたりに正規表現をつければ下のディレクトリにも影響させることができそう。
その場合、return viewのあたりを修正する必要がありそうですね。誰か書いて。