- 締切済み
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の組み合わせで回避できるようにできますでしょうか?
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- dscripty
- ベストアンサー率51% (166/325)
なんだかパズルだね。 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/ サイトへのリンクだけが含まれるページを表示する(各ページごと)。 ※各ページごとの、リンクページは、スクリプトで生成して、サーバーへコピーしておく。 ※サーバーサイドプログラムを使っていいなら……以下同文。 おしまい。
- yambejp
- ベストアンサー率51% (3827/7415)
(1)振り分けをTOPページだけにする 最初に振り分けられたらあとはそのリンクをいくらたどっても PC用のページからはPC用のページにいく (2)振り分けの際にリファラを確認する リファラが自サイトからではないときだけ振り分けをする ダイレクトアクセスや、他サイトからのアクセス時に振り分けをすれば あとは(1)と同様 (3)各ページのリンクに工夫をいれる たとえばPCのページに常にmode=pcを入れてしまうとか クッキーを設定して、その値をみて飛ばすページをかえるとか 手間を考えると(1)>(2)>(3) メンテナンス性や実効の確度を考えると(3)>(1)>(2) ただ、javascriptにはあまり期待しない方がよいと思います