5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Laravel5でPC/SPを振り分ける方法

Last updated at Posted at 2016-06-28

前提

  • 振り分ける必要があるのは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のあたりを修正する必要がありそうですね。誰か書いて。

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?