• ベストアンサー

共通のURLで、PCからも携帯からも見られるようにしたい

rokujiroの回答

  • ベストアンサー
  • rokujiro
  • ベストアンサー率53% (17/32)
回答No.1

私は下記の様にしています。 user agentにDoCoMoが入っているかを調べる物です。 DoCoMoならDoCoMo用のページを表示しJ-SkyならJ-Sky用のページそれ以外ならPC用にすればOKです。 if($ENV{'HTTP_USER_AGENT'} !~ /DoCoMo/) { if($ENV{'HTTP_USER_AGENT'} !~ /J-PHONE/) { &PC; exit; } else{&JPHONE;} } else{&DOCOMO;} 下記が参考用のサイトです。 携帯のuser agent http://specters.net/cgipon/labo/c_dist.html#useragent user agentの一覧 http://www8.big.or.jp/~000/CyberSyndrome/evc.html

pion16
質問者

お礼

まさに教えていただきたかった内容でした。 ありがとうございました。 うまくいきました。

関連するQ&A

  • orとelsif

    質問があります。 HTTP_USER_AGENTによって携帯端末とPC端末を振り分けるCGIを製作中です。 その際に疑問に思ったのですが、 if(($ENV{'HTTP_USER_AGENT'} =~ /***/i) or ($ENV{'HTTP_USER_AGENT'} =~ /***/i) or.....{ ~~~ } のように1行でorで繋げる方法と if($ENV{'HTTP_USER_AGENT'} =~ /***/i){ ~~~ } elsif($ENV{'HTTP_USER_AGENT'} =~ /***/i){ ~~~ } のようにelsifで繋げる方法とどちらが効率がいいのでしょうか? メモリの消費 サーバーへの負担 処理の速度 を中心にお願いします。

    • ベストアンサー
    • Perl
  • 携帯端末認識User-Agentについて

    初心者なのですが、CGIで携帯サイトを作っていますが。 実機がうまく動きません。User-Agentに問題があると考えています。 現在のソースと主な現象を記しますので、適切なものを教えて下さい。お願いします。 #----------# # 端末認識 # #----------# sub useragent { my $ua; #次にi-mode端末かどうかチェック if ($ENV{'HTTP_USER_AGENT'} =~ /^DoCoMo\/\d/) { $ua = 1; #次にJ-Phone端末かどうかチェック } elsif ($ENV{'HTTP_USER_AGENT'} =~ /^J-PHONE\/\d/) { $ua = 2; #EZweb端末かどうかチェック } elsif (($ENV{'HTTP_USER_AGENT'} =~ 'UP.B') && ($ENV{'HTTP_X_UP_SUBNO'} ne "")){ $ua = 3; #その他はPCとする } else { $ua = 0;} #PCブラウザ再判定 if ($ENV{'HTTP_USER_AGENT'} =~ /Mozilla\/|MSIE|Netscape|Opera|Lynx|AOL|Gecko/) {$ua = 0;} return $ua; } 主な現象 AU:ページ表示ごとに、いちいちブラウザメニューからページ更新をしなければならない(AUの特性もありますが) ソフトバンク:携帯版ではなく、PC版が表示されてしまう。 ドコモ :Pは問題ないようだが、SHは会員登録画面のフォームが半分の項目しか表示されず、次のページで残りの半分 は表示されるが、フォームにすべて書き込んで、登録送信をクリックしても、エラーデータ、の表示が出る。

    • 締切済み
    • CGI
  • PHPによる端末振り分けについて

    宜しくお願いします。 現在は、PERLでPC・各携帯キャリアへの振り分けを行っております。ソースは・・・ #!/usr/bin/perl #index.cgi # #ジャンプ先の設定 # #iモード $imode = "http://www.****.jp/i/index.html"; #EZweb $ezweb = "http://www.****.jp/e/index.html"; #J-Sky $jsky = "http://www.****.jp/j/index.html"; #パソコン $pc = "http://www.****.jp/pc/index.html"; # #ブラウザ情報の取得 # $brwsr = $ENV{'HTTP_USER_AGENT'}; # #判別 # #iモードの判別 if ($brwsr =~ /DoCoMo/){ print "Location: $imode\n\n"; } #EZwebの判別 elsif ($brwsr =~ /UP.Browser/){ print "Location: $ezweb\n\n"; } #J-Skyの判別 elsif ($brwsr =~ /J-PHONE/){ print "Location: $jsky\n\n"; } #その他(パソコン) else { print "Location: $pc\n\n"; } exit; という形で自動振り分けをしておりますが、これと同じ機能をPHPで作るにはどうすれば良いでしょうか?

    • ベストアンサー
    • PHP
  • 携帯とPC振り分け

    現在PCサイトを作っています。 携帯からアクセスがあった場合に振り分け(?)したいと思っていて、現在ソースがこんなかんじです。 .htaccessに DirectoryIndex index.php index.cgi index.html index.shtml と書いてあって、 <?php $mobile = print <<<MOBILE <?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" /> <meta http-equiv="Content-Script-Type" content="text/javascript" /> <meta http-equiv="Content-Style-Type" content="text/css" /> <title>携帯には対応していません(HPタイトル)</title> </head> <body> 携帯には対応していません。(HPタイトル) </body> </html> MOBILE; if(isset($_SERVER['HTTP_USER_AGENT'])){ $user_agent = $_SERVER['HTTP_USER_AGENT']; if(eregi("DoCoMo",$user_agent)){$mobile;exit;} else if(eregi("UP\.Browser",$user_agent)){$mobile;exit;} else if(eregi("J-PHONE",$user_agent)){$mobile;exit;} else if(eregi("Vodafone",$user_agent)){$mobile;exit;} else if(eregi("mobile",$user_agent)){$mobile;exit;} else if(eregi("J-EMULATOR",$user_agent)){$mobile;exit;} else{header("Location: index.html");exit;} }else{ print <<<END <html><body> HTTP_USER_AGENT Error<br /><br /> ユーザーエージェントが読み込めませんでした。<br /> </body></html> END; } ?> こんな感じです。 ですが、エラーはいてしまいます。 Warning: Cannot modify header information - headers already sent by (output started at D:\XAMPP\htdocs\index.php:16) in D:\XAMPP\htdocs\index.php on line 26 こんな感じです。 まったくのPHP初心者(HTMLはまあまあわかる)なので だいぶソースが間違っていると思います。 このPHPのソースは携帯サイトnet(http://www.keitai-site.net/)からいただきました。

    • ベストアンサー
    • PHP
  • .htaccessでPCと携帯サイトを振り分けたい

    急ぎの仕事で、PCサイトと携帯サイトを振り分けなければならず、 一番使いやすそうな .htaccess を試しているところです。 いろんなサイトを見て、 (PCサイト) www.aaa.com/ から (携帯サイト) www.aaa.com/i/ に振り分ける事には成功したのですが、 携帯からでも www.aaa.com/index.html と入力すると、振り分け出来ずに そのままPCサイトが表示されてしまいます。 .htaccessの記述は以下の通りです。 RewriteEngine On RewriteCond %{HTTP_USER_AGENT} ^DoCoMo [OR] RewriteCond %{HTTP_USER_AGENT} ^J-PHONE [OR] RewriteCond %{HTTP_USER_AGENT} ^Vodafone [OR] RewriteCond %{HTTP_USER_AGENT} ^SoftBank [OR] RewriteCond %{HTTP_USER_AGENT} ^MOT- [OR] RewriteCond %{HTTP_USER_AGENT} ^KDDI [OR] RewriteCond %{HTTP_USER_AGENT} UP\.Browser RewriteRule ^$ /i/index.html [R] また、auのSH008でテストを行っております。 ここから先がどうしても分からないので、 どなたか知恵を貸していただけませんでしょうか? まだ初心者で、内容を完璧には理解できておりませんので 出来ましたら全文を記述していただけると大変助かります。 以上、よろしくお願いいたします。

  • ブラウザ毎に外部CSSファイルでデザイン変更したい

    CGIソースファイル http://www.loplopland.com/test/newfile.html このCGIでインターネットエクスプローラーだけ別の外部CSSファイルでデザイン変更したいんですが、どのようにしたらいいでしょうか? 別のところで $ua = $ENV{'HTTP_USER_AGENT'}; if (index($ua, "compatible; MSIE") >= 0) { $stylebase = "stylebase_IE.css"; } else { $stylebase = "stylebase.css"; } を入れたらいいと言われたんですが、どこにどう入れたらいいかいまいちわかりませんでした。

  • .htaccessで携帯サイトとPCサイトの振り分けについて

    .htaccessで携帯サイトとPCサイトの振り分けについて お世話になります。 .htaccessで携帯サイトとPCサイトの振り分けで困っています。 現在、index.phpで携帯サイトとPCサイトの振り分けしています。この場合、PCサイトのトップページがindex.htmlではなく他の名前にしなくてはならないようで、現在はpc.htmlにしています。 どうにかpc.htmlではなく、index.htmlのまま携帯サイトとPCサイトの振り分けをしたいのです。 .htaccessであればできそうなので、いろいろと調べながら試したのですがうまくいきませんでした。 使用しているサーバーはさくらのレンタルサーバーで、ライトプランです。 mod_rewriteは入ってると記載してありました。.htaccessもOKなようです。 以下のように.htaccessファイルに記述して試しました。 例1) RewriteEngine On RewriteCond %{HTTP_USER_AGENT} ^DoCoMo [NC,OR] RewriteCond %{HTTP_USER_AGENT} ^vodafone [NC,OR] RewriteCond %{HTTP_USER_AGENT} ^SoftBank [NC,OR] RewriteCond %{HTTP_USER_AGENT} ^KDDI [NC,OR] RewriteCond %{HTTP_USER_AGENT} ^J-PHONE [NC,OR] RewriteCond %{HTTP_USER_AGENT} ^Up.Browser [NC,OR] RewriteCond %{HTTP_USER_AGENT} ^ASTEL [NC,OR] RewriteCond %{HTTP_USER_AGENT} ^DDIPOCKET [NC] RewriteRule ^$ abc.com/m/ [R] 例2) Options +FollowSymLinks RewriteEngine On RewriteCond %{HTTP_USER_AGENT} DoCoMo RewriteRule ^$ http://www.abc.com/m/index.html [R] RewriteCond %{HTTP_USER_AGENT} J-PHONE RewriteRule ^$ http://www.abc.com/m/index.html [R] RewriteCond %{HTTP_USER_AGENT} UP.Browser RewriteRule ^$ http://www.abc.com/m/index.html [R] 素人ですので、できましたら記述全文教えていただけるとありがたいです。 宜しくお願い致します。

    • ベストアンサー
    • HTML
  • CGIの時間の環境変数

    ちょっとタイトルがあっているのか、イマイチ心配なのですが(汗) フォームのCGIを作っています。 登録情報がメールで届くようにしています。 ホスト名とかIPアドレス、ユーザーエージェントは下記でできました。 $host = gethostbyaddr(pack("C4", split(/\./, $ENV{'REMOTE_ADDR'})), 2); $addr = $ENV{'REMOTE_ADDR'}; $HTTP_USER_AGENT = $ENV{'HTTP_USER_AGENT'}; フォームに登録してくれた曜日とか時間を取るやり方がわかりません。 どなたかお知恵をお貸しください m(__)m

  • .htaccessで携帯とPCの振り分け

     .htaccessで携帯サイトとPCサイトの振り分けで困っています。 .htaccessは以下の通りです。 <IfModule mod_rewrite.c> RewriteEngine On # SoftBank RewriteCond %{HTTP_USER_AGENT} ^J-PHONE [OR] RewriteCond %{HTTP_USER_AGENT} ^Vodafone [OR] RewriteCond %{HTTP_USER_AGENT} ^MOT- [OR] RewriteCond %{HTTP_USER_AGENT} ^SoftBank RewriteRule ^$ /mobile/[R=302,L] # DoCoMo RewriteCond %{HTTP_USER_AGENT} ^DoCoMo RewriteRule ^$ /mobile/[R=302,L] # au(HDML-Only) RewriteCond %{HTTP_USER_AGENT} ^UP.Browser RewriteRule ^$ /mobile/[R=302,L] # au(HTML-OK) RewriteCond %{HTTP_USER_AGENT} ^KDDI RewriteRule ^$ /mobile/[R=302,L] </IfModule>  これで、PCからのアクセスはどのページへも正常なのですが、携帯からのアクセスはhttp://example.comですとちゃんと携帯サイトのindex.htmlへいくのですが、http://example.com/***.htmlで携帯からアクセスするとPCサイトのhttp://example.com/***.htmlへつながってしまいます。この場合、携帯サイトのindex.htmlへ導くためにはどのようにすればよいのでしょうか。  また、欲を言えば、PCサイトのそれぞれのページにアクセスしてきた携帯をindex.htmlではなく、携帯サイトのそれぞれの該当するページへと導くためにはどのようにしたらよいのでしょうか。  まったくの初心者ですが、よろしくお願いいたします。

  • .htaccessを使用した携帯端末の振り分けについて

    各キャリア毎に振り分けたいのですが、.htaccessを設置したところでサーバーエラーが起きて行き詰まってしまいました。 現状は下記の記述です。 サイトから見つけて、転送先URLを書き換えただけです。 ------------------------ RewriteEngine On RewriteCond %{HTTP_USER_AGENT} DoCoMo RewriteRule ^$ /i/index.xhtml [R] RewriteCond %{HTTP_USER_AGENT} J-PHONE RewriteRule ^$ /s/index.html [R] RewriteCond %{HTTP_USER_AGENT} Vodafone RewriteRule ^$ /s/index.html [R] RewriteCond %{HTTP_USER_AGENT} UP.Browser RewriteRule ^$ /a/index.html [R] ------------------------------------ 意味を把握して使用していないので、問題点が分からない状態です。 サーバは.htaccess使用可能です。 改善策をお教えいただければ幸いです。