• ベストアンサー

携帯用ページとPC用ページの切替

こんにちわ。 現在、携帯(iモード)用のサイトも作成しようと考えています。 そこで、いろいろページ検索していると、PCでアクセスすればPC用ページへ、iモードからアクセスすればiモード用のページへ飛ぶといったサイトを見かけました。でも、それをどのようにやっているかがわかりません。 もしご存知のかたがいらっしゃいましたら、できるだけ具体的に教えていただけないでしょうか。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • 123daa
  • ベストアンサー率62% (5/8)
回答No.3

今のお話の中では、処理だけを行うのがindex.cgiとお考え頂いて結構です。 もちろん、色々な方法があるので、1つのソースファイルで分岐からHTMLの吐き出しまで可能です。

hiko758
質問者

お礼

ありがとうございます。 いろいろお手数おかけいたしました。 なんとかやってみます。また、わからないことがあれば、おうかがいするかもしれませんが、そのときはまたよろしくお願いいたします。

その他の回答 (2)

  • 123daa
  • ベストアンサー率62% (5/8)
回答No.2

え~っとですね、イメージでいうとこんな感じです。 (1)index.cgi 入り口(分岐用) (2)pc.html  パソコン用 (3)docomo.html ドコモ用 (4)jphone.html JPHONE用 と4つ準備します。 index.cgiには分岐させるプログラムを書きます。言語は、パールかPHPがいいでしょう。もちろん、お使いのサーバーがどちらかに対応している必要がありますが。 index.cgiの中身を日本語で書くと以下のイメージになります。 if ユーザーエージェントが docomo then  ロケーションリダイレクト docomo.html elseif ユーザーエージェントが jphone then  ロケーションリダイレクト jphone.html else  ロケーションリダイレクト pc.html end if って感じになりますね。 昔PERLで書いた実際のソースです。 ($agent,$gomi) = split(/\//,$ENV{'HTTP_USER_AGENT'},2); if($agent eq 'DoCoMo') { print "Location: http://www.a.com/i.html\n\n"; } elsif ($agent eq 'J-PHONE') { print "Location: http://www.a.com/j.html\n\n"; } else { print "Location: http://www.a.com/pc.html\n\n"; } どれかのページにアクセスがきたというよりも、入り口をひとつに指定して、そっからユーザーエージェントに応じて分岐してあげると言った流れになります。 http://www.a.com/index.cgi でアクセスしてきたら、上記のスクリプトがユーザーエージェントを判別して飛ばしてくれるといった感じです。たとえばドコモならhttp://www.a.com/index.cgihttp://www.a.com/i.htmlといったように読み替えてくれるのです・・(表現が悪いかな?) そのページとは・・・?というのは、index.cgiにあたると思います。

hiko758
質問者

補足

丁寧に説明いただきまして、ありがとうございます。 確認したいのですが、index.cgiのページは画面表示はなく、処理のみを行うと考えてよろしいのでしょうか。 何度も申し訳ありません。

  • 123daa
  • ベストアンサー率62% (5/8)
回答No.1

このアクセスは「IE」ですとか「ドコモ」ですと言った内容の情報が入っている環境変数があります。パールやPHP等ではそれを取得することができるんです。 そういった内容を取得して、その内容に応じて目的のHTML等に飛ばしてやればいいのです。 僕が昔分岐プログラムを作った時、非常に勉強になったサイトが参考URLです。 一度読んで見てください。

参考URL:
http://www.futomi.com/subroutine/ua.html
hiko758
質問者

補足

ありがとうございます。参考にさせていただきます。 そこで、ひとつ教えていただきたいのですが、ブラウザ判定のルーチンはどこに記述すればよろしいのでしょうか。 ブラウザごとに違うページを用意したとして、どれかのページにアクセスに来たときに判断するわけですよね?そのページとは・・・?デフォルトのIE用のページと考えてよろしいのでしょうか? 言ってる意味をわかっていただけるか、少し心配ですけど。よろしくお願いします。

関連するQ&A

専門家に質問してみよう