みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

htaccessとJavascriptでの振り分け

いつもお世話になっています。

現在htaccessでキャリア判別+
RewriteCond %{QUERY_STRING} !mode=pc

のような感じで、スマホ端末をspフォルダへ振り分けています。

そこにスマホでもPC版を見たい方のために、
http://hogehoge.jp?mode=pc
という形でPC版を見れるようにしています。

ここまでは理解でき、設定もできているのですが、

http://hogehoge.jp?mode=pc

と言うのは、スマホサイトからのリンククリックの時にmode=pcになるだけで、
PC版に移動した後に、さらに別の詳細ページなどに移動しようとすると、
またhtaccessが効いて、spフォルダへ再転送されてしまいます。

スマホからPC版へ移動した場合に、
そのセッション中だけは、PC版を見続けられるようにできますでしょうか?

phpは使っていません。
HTML,Javascript、htaccessの組み合わせで回避できるようにできますでしょうか?

投稿日時 - 2012-04-02 12:05:16

QNo.7397829

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

なんだかパズルだね。

JavaScript 非依存
referrer 非依存
cookie 依存の方法。

たぶん、ロジックにあなはないとおもうけど。。。

.htaccess での処理。
スマートフォンから pc サイトへのアクセスで cookie に mode=pc がセットされているときは、
?mode=pc を追加してリダイレクト。

セットされてないなら、
/sp/ サイトへリダイレクト

スマートフォンからの ?mode=pc 付きリクエストで cookie に mode=pc がセットされていないときは、
スマートフォンで、pc サイトを表示するには cookie を有効にする必要があることを知らせるページにリダイレクト。
cookie に mode=pc がセットされているときは、pc サイトを表示。

/sp/ サイトの各ページごとに cookie へ mode=pc をセットして、pc サイトへリダイレクトするだけのページを作って、……
※スクリプトで生成してサーバへコピーしておく。
※サーバーサイドプログラムを使っていいなら、1ページでできるけど、今回は使わない前提なので。
……、そのページへのリンクをはる。そのリンクをクリックすれば、上の条件で、?mode=pc へリダイレクトされて pc サイトが表示される。

pc サイトの各ページは、iframe を含んでいて、iframe で表示するページを pc と スマートフォンで変える(.htaccess)。

スマートフォンのときは、/sp/ サイトへのリンクだけが含まれるページを表示する(各ページごと)。
※各ページごとの、リンクページは、スクリプトで生成して、サーバーへコピーしておく。
※サーバーサイドプログラムを使っていいなら……以下同文。

おしまい。

投稿日時 - 2012-04-02 21:33:21

ANo.1

(1)振り分けをTOPページだけにする
最初に振り分けられたらあとはそのリンクをいくらたどっても
PC用のページからはPC用のページにいく

(2)振り分けの際にリファラを確認する
リファラが自サイトからではないときだけ振り分けをする
ダイレクトアクセスや、他サイトからのアクセス時に振り分けをすれば
あとは(1)と同様

(3)各ページのリンクに工夫をいれる
たとえばPCのページに常にmode=pcを入れてしまうとか
クッキーを設定して、その値をみて飛ばすページをかえるとか

手間を考えると(1)>(2)>(3)
メンテナンス性や実効の確度を考えると(3)>(1)>(2)
ただ、javascriptにはあまり期待しない方がよいと思います

投稿日時 - 2012-04-02 13:01:50

あなたにオススメの質問