PRESSMAN*Tech

HTML5, CSS3からWordPress, AWS, Docker, Node.jsまで。プレスマンのスタッフが綴る技術ブログ。

ApacheでのスマートフォンとPCの振り分けとcookie

トップページで振り分けするだけなら別になにも難しくありません。スマートフォンのディレクトリが/sp/とすると

RewriteEngine ON
RewriteCond %{HTTP_USER_AGENT}(iPod|iPhone|Android|BlackBerry|Windows.Phone) [NC]
RewriteRule ^/$ http://www.pressman.ne.jp/sp/ [L]

でおしまいです。これで、http://www.pressman.ne.jp もしくは http://www.pressman.ne.jp/にスマートフォンでアクセスするとhttp://www.pressman.ne.jp/sp/に遷移します。なので、スマートフォンでPCページを見たければhttp://www.pressman.ne.jp/index.html等にリンクをはればよくなります。

Cookieをつかって行うことも出来ます。

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/sp/.*$
RewriteCond %{HTTP_USER_AGENT} (iPod|iPhone|Android|BlackBerry|Windows.Phone) [NC]
RewriteCond %{QUERY_STRING} !vm=pc
RewriteCond %{HTTP_COOKIE} !vm=pc [NC]
RewriteRule ^(.*)$ http://www.pressman.ne.jp/sp/$1 [R=301,L]

こうすれば、cookieにvm=pcがなければ http://www.pressman.ne.jp/sp/に遷移するようになります。
また、cookieとは関係ありませんが、先ほどと違うのは http://www.pressman.ne.jp/hoge.html へのアクセスは http://www.pressman.ne.jp/sp/hoge.html へ遷移するようになります。

後は条件に合わせてcookieを設定すればいいだけです。javascriptが使えるのならそれが一番便利ですが、そうでないならサーバー側で実装ということになります。PHP等が使えれば簡単ですが、クッキーの期限がブラウザを閉じるまででいいならapacheでも設定出来ます。

RewriteCond %{QUERY_STRING} vm=pc
RewriteCond %{HTTP_COOKIE} !vm=pc [NC]
RewriteRule (.*) $1 [E=pc_cookie:1,L]
Header add Set-Cookie "vm=pc; path=/" env=pc_cookie

Header setだと他のクッキーを上書きしてしまいますので注意です。apacheのconfで有効期限も指定できれば便利なのですが、なにかやり方があるのでしょうか。

投稿者:taichi

taichi の紹介

何でもやりますが、一応プログラマです。
このエントリーをはてなブックマークに追加

私たちと一緒に働きませんか?

株式会社プレスマンでは、プログラミングが大好きな方、仕事を通してさらにスキルを磨きたい方を募集しています。まずは募集職種をご覧の上、お気軽にお問い合わせください。あなたとお会いできるのを楽しみにしています。

プレスマンの採用情報を見る →

コメントは受け付けていません。

▲ 先頭へ戻る