• ベストアンサー

携帯サイトで・・・

宜しくお願いします ドコモの携帯サイトを製作中ですが、ある条件でリダイレクトさせるため、 header("Location:index.php" );としているのですが、i-modeのシュミレーターでは問題なくジャンプしてくれるのだけど、実機で確認すると「無効なデータが含まれている」というエラーになってしまいます。いろいろ試して、上記部分の問題ではないかと思いますが、似たような経験をお持ちの方アドバイスお願いします

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

  • ベストアンサー
  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

Location: http://www.foobar.com/index.php ――のように絶対URLを指定してみては。 HTTPの仕様として、そうなっているので。 あと、Locationヘッダを使う場合、201か300番台のHTTP応答ステータスコードを返すようにしてみるとか。 HTTPの仕様として、そこまで限定されているかは読み取れなかったけど、そうする方が適切と思われますので。

logomark
質問者

お礼

ご回答有難うございます おっしゃる通りで上手く行きました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 携帯で携帯サイトを閲覧すると、なぜかPCサイトが表示されます。

    携帯で携帯サイトを閲覧すると、なぜかPCサイトが表示されます。 お世話なります。素人ですので説明にいたらない点が多々あると思いますが、どうか宜しくお願いします。 タイトルが分かりずらくてすみません。どういったことかといいますと、携帯から直接アドレスをひくと自分の携帯サイトが表示されるのに、auのEZwebのau oneトップから自分の携帯サイトを検索し表示させますと、なぜか、自分のPCサイトに飛んでしまいます。 なぜでしょうか? 以下の記述のindex.phpで同じドメインで携帯へ飛ばしています。 <?php /////////////////////////////////////////▼初期処理▼ //http://から始まるURLを指定 $docomo = "http://www.abc.com/m/index.html"; //ドコモの場合 $au = "http://www.abc.com/m/index.html"; //auの場合 $softbank = "http://www.abc.com/m/index.html"; //ソフトバンクの場合 $msie = "http://www.abc.com/index.html"; //IEの場合 $Netscape = "http://www.abc.com/index.html"; //Netscapeの場合 $opera = "http://www.abc.com/index.html"; //Operaの場合 $firefox = "http://www.abc.com/index.html"; //Firefoxの場合 $pc = "http://www.abc.com/index.html"; //上記機種以外 /////////////////////////////////////////▲初期処理終端▲ /////////////////////////////////////////▼携帯判別▼ if(isset($_SERVER['HTTP_USER_AGENT'])){ $user_agent = $_SERVER['HTTP_USER_AGENT']; if(eregi("DoCoMo",$user_agent)){header("Location: $docomo");} elseif(eregi("UP\.Browser",$user_agent)){header("Location: $au");} elseif(eregi("J-PHONE",$user_agent)){header("Location: $softbank");} elseif(eregi("Vodafone",$user_agent)){header("Location: $softbank");} elseif(eregi("SoftBank",$user_agent)){header("Location: $softbank");} elseif(eregi("J-EMULATOR",$user_agent)){header("Location: $softbank");} elseif(eregi("MSIE",$user_agent)){header("Location: $msie");} elseif(eregi("Netscape",$user_agent)){header("Location: $netscape");} elseif(eregi("Opera",$user_agent)){header("Location: $opera");} elseif(eregi("Firefox",$user_agent)){header("Location: $firefox");} else{header("Location: $pc");} }else{ print <<<END <html><body> HTTP_USER_AGENT Error<br /><br /> ユーザーエージェントが読み込めませんでした。<br /> </body></html> END; } /////////////////////////////////////////▲携帯判別終端▲ ?> あと、なぜかindex.phpよりindex.htmlを先によんでしまうようなので、.htaccessで以下のように記述してindex.phpを先に読ませています。 DirectoryIndex index.php index.html 宜しくお願いします。

    • ベストアンサー
    • PHP
  • サイトが移動しました(301)が出てしまいます。

    以下のようにキャリア判別しましたが、ドコモ(f706i) でみるとサイトが移動しました(301)が出ます。 これはなんとかならないんでしょうか? <?php $agent = $_SERVER['HTTP_USER_AGENT']; if(preg_match("/^DoCoMo/i", $agent)){ header("Location: ​http://sample.com/i/index.html");​ exit; }else if(preg_match("/^(J\-PHONE|Vodafone|MOT\-[CV]|SoftBank)/i", $agent)){ header("Location: ​http://sample.com/s/index.html");​ exit; }else if(preg_match("/^KDDI\-/i", $agent) || preg_match("/UP\.Browser/i", $agent)){ header("Location: ​http://sample.com/e/index.html");​ exit; }else{ header("Location: ​http://sample.com/pc/index.html");​ exit; } ?>

    • ベストアンサー
    • PHP
  • PHPとPerlのリダイレクト

    こんにちは。 PHPとPerlのリダイレクトの処理ついて質問です。 PHPのリダイレクトには、exit;を付けないとその後の処理も行ってしまいます。 header("Location:index.php"); exit; Perlのリダイレクトにも、このexit;は必要でしょうか? print "Location:index.cgi\n\n"; exit; ← ? 以上です。 どうぞよろしくお願いします。

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

    同じドメインにて携帯とPCの振り分けなのですが、htaccessにて振り分けたのですが、ブラウザに「振り分けがループしています」とでるのですが、 これはなぜでしょう? htaccessの中身の内容ですが、 DirectoryIndex index.php index.html index.htm これで読み込んだindex.phpの中身は <?php $agent = $_SERVER['HTTP_USER_AGENT']; if(preg_match("/^DoCoMo/i", $agent)){ header("Location: http://www.○○○○○.com/mobile/index.xhtml"); exit; }else if(preg_match("/^(J\-PHONE|Vodafone|MOT\-[CV]|SoftBank)/i", $agent)){ header("Location: http://www.○○○○○.com/mobile/index.xhtml"); exit; }else if(preg_match("/^KDDI\-/i", $agent) || preg_match("/UP\.Browser/i", $agent)){ header("Location: http://www.○○○○○.com/mobile/index.xhtml"); exit; }else{ header("Location: http://www.○○○○○.com/"); exit; } ?> サーバはlolipopでhtaccessのパーミッションは604で phpのパーミッションは700です。

    • 締切済み
    • CGI
  • 携帯でのheader Locationについて

    携帯を対象としたHPをphpで作成しています。 ファイルから$urlを取得して、 header("Location: $url"); にて、ジャンプさせるのですが、iモードだとうまく$urlのHPにジャンプするのですが、Vodafoneではうまくジャンプできず、エラー画面が表示されてしまいます。 auではまだ試していないので分かりませんが、機種や会社によって上記のようなLocationは使えないのでしょうか? なぜ、うまくジャンプしないのか分かりません。 なんか良い方法・理由を教えてください。よろしくお願い致します。

    • 締切済み
    • PHP
  • 301リダイレクトをするとドコモだけ末尾に「/」を入れてもサイトが移動

    301リダイレクトをするとドコモだけ末尾に「/」を入れてもサイトが移動しました。となってしまいます。 301リダイレクトさえできれば どのような方法でもできればいいのですが色々試してみても サイトが移動しましたと表示されています。 ■cgiで行ったこと print "Status: 301 Moved Permanently\n"; print "Location: http://******.co.jp/\n\n"; exit; ■PHPで行った事 header("HTTP/1.1 301 Moved Permanently"); header("Location: http://******.co.jp/"); ■apacheで行った事 RewriteCond %{HTTP_HOST} ^(*****\.com)(:80)? RewriteRule (.*) http://******.co.jp/[R=301,L] 1つ1つ別にやってみましたが、最後にスラッシュを入れる、絶対パスをいれても 表示されてしまいます。 302リダイレクトはどうしても入れることが出来ないので 大変困っております。 どうぞ宜しくお願い致します。

  • Docomoでサイトが移動しました(301)が消えない

    お世話になっています。 携帯向けサイトを制作しているのですが、Docomo機種で「サイトが移動しました(301)」が消えずに困っています。 サイトはPHPで制作している為、拡張子が「.php」になります。 各所でheader移動しているのですが、そこで301表示が出てしまいます。 header移動は以下のように記述しています。 if(preg_match("/DoCoMo/",$_SERVER['HTTP_USER_AGENT'])){ header("HTTP/1.1 301 Moved Permanently"); header("Location: index.php?".SID); } else { header("Location: index.php"); } exit; セッションを利用している為、スラッシュで終わる事が出来ません。 POSTでSIDを渡す場合は問題なく移動出来ています。 文字コードはShift-JIS、確認を行った機種は70シリーズの3種類の携帯です。 header部分は「header('Status: 301 Moved Permanently');」と言う様にも試してみましたが解決しませんでした。 301表示を消す他の方法がありましたら、ご教授願えませんでしょうか? 宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • 携帯、スマートフォンのPHP振り分け

    こんなPHPを書いているのですが どうしてもParse errorが出ます。 解決方法を教えて下さい!! ■エラー内容 Parse error: syntax error, unexpected T_EXIT in /home/sites/heteml/users/web/m/index.php on line 5 ■振り分けPHP <?php $agent = $_SERVER['HTTP_USER_AGENT']; if(preg_match("/^DoCoMo/i", $agent)){ header("Location: ​http://www.hogehoge.com/m/i/index.html");​ exit; }else if(preg_match("/^(J\-PHONE|Vodafone|MOT\-[CV]|SoftBank)/i", $agent)){ header("Location: ​www.hogehoge.com/m/s/index.html");​ exit; }else if(preg_match("/^KDDI\-/i", $agent) || preg_match("/UP\.Browser/i", $agent)){ header("Location: ​www.hogehoge.com/m/e/index.html");​ exit(); }else if(preg_match("iPhoneやスマートフォン用の判定", $agent)){ header("Location: www.hogehoge.com/m/smt/index.html"); exit(); }else{ header("Location: ​www.hogehoge.com/m/pc/index.html");​ exit(); } ?> よろしくお願い致します。

    • ベストアンサー
    • PHP
  • phpでのリダイレクト処理について

    phpで index.php にアクセスがあった時に、 以下の様に top.php へリダイレクトさせたいと思います。 header("Location:top.php"); exit(); この時、top.phpが表示された時のブラウザのアドレスバーは index.php のままです。 アドレスバーのURLを top.php にする方法はないですか?

    • 締切済み
    • PHP
  • locationでジャンプした場合GETパラメータは認識されるの?(携帯編)

    (携帯サイトの場合です) I.まず下記のようにlocationヘッダでジャンプさせます。 header("Location: http://hoge.com/test.php?id=ok"); II.ジャンプ先で $id = $_GET["ok"]; とした場合GETパラメータは正常に取得できるのでしょうか。 お分かりになる方よろしくお願い致します。

    • 締切済み
    • PHP