プログラミング

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

この記事は2年以上前ですので、内容が古い可能性があります

トップページで振り分けするだけなら別になにも難しくありません。スマートフォンのディレクトリが/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で有効期限も指定できれば便利なのですが、なにかやり方があるのでしょうか。

この記事をシェアする:
◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇

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

「ApacheでのスマートフォンとPCの振り分けとcookie」はいかがでしたか?
株式会社プレスマンでは、 WordPressが大好きな方、仕事を通してさらにスキルを磨きたい方を募集しています。 まずは募集職種をご覧の上、お気軽にお問い合わせください。 あなたとお会いできるのを楽しみにしています。

採用情報を見る

-プログラミング
-

© 2021 PRESSMAN*Tech Powered by STINGER