OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

同じURLでPCとi-mode

  • 暇なときにでも
  • 質問No.116047
  • 閲覧数55
  • ありがとう数4
  • 気になる数0
  • 回答数4
  • コメント数0

お礼率 77% (84/108)

CGIを使ってPCとi-modeの異なる環境で
HPを表示させたいのですが、どのようにすれば
いいのでしょう・・?
なるべくcgiにPC用とi-mode用を埋め込まず
cgiが環境に合わせたhtmlを読みに行くような形に
したいのですが、、、(SSI?)
通報する
  • 回答数4
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.2

 JavaScript を使う技は、端末に JavaScript が入っていることが前提なのでおすすめできません。
 ネチケッチ違反ですし(^_^;

 で、それだと、下記のようなCGIを用意するのが一番いいでしょう。
 本当はアパッチのネゴシエーションが使えればそれが一番なんですけどね。CGIは重いし(^_^;

ファイル名:index.cgi
------------------------------○
#!/usr/local/bin/perl
$browser=$ENV{'HTTP_USER_AGENT'};
$browser=~s/\/.*$//;
if($browser =~ /^docomo$/i ){
print "Location: http://wwwwwwww/"; #i-mode
} else {
print "Location: http://wwwwwwww/"; #other
}
------------------------------○

 で、これでiモードだけを #i-mode の行のURLへとばします。このとき、Location: のあとに来る文字列は必ず http: から始まっている必要があります。
 i-mode 以外のブラウザは無条件で #other の方へ飛びます。
 また、1行目は問題があるようであれば書き換えてください。

 もちろん、.htaccess に

DirectoryIndex index.cgi

 という記述が可能であるか、でなければ

 または

DirectoryIndex index

 という設定がプロバイダ側でやってあることが前提ですのでお気を付けを。

 プログラムが何やってるのか分からなければ、簡単にでよければ解説しますんで、そのときは補足ください。

 ただし、iモードが Location: を認識するかどうか分からないので、503i以前のiモードを持っているのであれば実際に動くかどうかテストしてみてください。
お礼コメント
makihiro

お礼率 77% (84/108)

ありがとうございました。m(_ _)m
まさにこの記述ですね!
USER_AGENTでif文を使えば良かったのですね。
ところでアパッチのネゴエーションというのはどのようなものでしょうか・・・?
投稿日時 - 2001-08-09 11:56:57
-PR-
-PR-

その他の回答 (全3件)

  • 回答No.1
レベル12

ベストアンサー率 38% (256/672)

CGIではありませんが、JavaScriptでブラウザ名を問い合わせ、IEとNN以外ならケータイ用ページに飛ばす、という技は聞いたことがあります。 ...続きを読む
CGIではありませんが、JavaScriptでブラウザ名を問い合わせ、IEとNN以外ならケータイ用ページに飛ばす、という技は聞いたことがあります。
お礼コメント
makihiro

お礼率 77% (84/108)

早速のご回答ありがとうございます。
JavaScriptがオフだとi-modeページになっちゃいますね・・・?
投稿日時 - 2001-08-09 11:53:39


  • 回答No.3
レベル11

ベストアンサー率 42% (103/245)

私はUSER_AGENTでPCとi-modeを判別して、それぞれのHTMLファイルを読み込んで表示…としています。 if ($agent eq 'i') {     if(!open(IN, "$iFile")) {     $Date = join('',<IN>);     close(IN);     $len ...続きを読む
私はUSER_AGENTでPCとi-modeを判別して、それぞれのHTMLファイルを読み込んで表示…としています。

if ($agent eq 'i') {
    if(!open(IN, "$iFile")) {
    $Date = join('',<IN>);
    close(IN);

    $len = length($Date);
    print "Content-type: text/html\n";
    print "Content-length: $len\n";
    print "\n";
    print $Date;
}
else {
    if(!open(IN, "$pcFile")) {
    $Date = join('',<IN>);
    close(IN);

    print "Content-type: text/html\n\n";
    print $Date;
}

別にjoin()を使わなくても1行ずつ読み込んで表示するのでも良いと思いますが、これは私の癖みたいなもんです(^^;
お礼コメント
makihiro

お礼率 77% (84/108)

ありがとうございました。m(_ _)m
早速実戦してみます。
投稿日時 - 2001-08-09 11:58:59
  • 回答No.4

 補足です。  ネゴシエーションについてですが、これは、条件によって表示するページを変える設定のことです。  たとえば、日本人には日本語で、中国人には中国語でコンテンツを提供する、というようなこともできます。  ブラウザの設定に「言語の優先順位」というようなものがあるのを見たことがあると思いますが、あれがそうです。  俺は少なくとも言語による区別しかみたことがありませんけど、アパッチのバー ...続きを読む
 補足です。

 ネゴシエーションについてですが、これは、条件によって表示するページを変える設定のことです。
 たとえば、日本人には日本語で、中国人には中国語でコンテンツを提供する、というようなこともできます。
 ブラウザの設定に「言語の優先順位」というようなものがあるのを見たことがあると思いますが、あれがそうです。

 俺は少なくとも言語による区別しかみたことがありませんけど、アパッチのバージョンが上がればブラウザによってページを変えたりもできるようになるかもしれません。

 なお、アパッチというのはホームページを表示するためのサーバー側プログラムの一種で、現在もっとも一般に普及しているものです。
補足コメント
makihiro

お礼率 77% (84/108)

すみません。また教えてください。
CGIの方がどうしてもサーバエラーになってしまうので
.htaccessで

order allow,deny
allow from all
deny from 210.153.84.
ErrorDocument 403 http://ドメイン名/i.html

このように記述してi-modeのIPをdenyし、403ページを
i-mode用のメニューにするように考えたのですが、
アクセスに妙に時間がかかってしまいます。
やはりこれは問題でしょうか。。。
投稿日時 - 2001-08-13 12:12:53
お礼コメント
makihiro

お礼率 77% (84/108)

補足ありがとうございます。
現在のapacheではブラウザによる表示ページのネゴエーションは無いんですね。

UNIX系ではapacheが普及しすぎてapache以外のデーモンはほとんど耳にしないですねー。
投稿日時 - 2001-08-09 14:39:54
このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ