PCページと携帯ページのPHPによる振り分けについて質問です。

現在、PC用ページを ⇒ http://example.com/に設置し、
携帯用のページを  ⇒ http://example.com/mobi/に設置したいと思っています。
そこで、PC用の各ページの頭に、直接PHPスクリプトを書いて、
携帯だけ、飛ばしてしまう。という方法がやりたいのですが。
-------------------
<?php
$agent = $_SERVER['HTTP_USER_AGENT'];
if(preg_match("/^DoCoMo/i", $agent)){
header("Location: http://example.com/mobi/");
exit;
}else if(preg_match("/^(J-PHONE|Vodafone|MOT-[CV]|SoftBank)/i", $agent)){
header("Location: http://example.com/mobi/");
exit;
}else if(preg_match("/^KDDI-/i", $agent) || preg_match("/UP.Browser/i", $agent)){
header("Location: http://example.com/mobi/");
exit;
}else{
header("Location: http://example.com/index.html");
exit;
}
-------------------
こうすると、無限リダイレクトにおちいってしまいました。
要は、http://example.com/index.html にアクセスしたとき、
PCはそのままこのページを閲覧できる。
携帯のみ http://example.com/mobi/index.html に飛ばす。
ということがやりたいです。
PHPに強い方、宜しくお願いいたします。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2010/12/16 20:53:40
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:psne No.1

回答回数605ベストアンサー獲得回数334

ポイント35pt

まずは.htaccessの記述があれば、再度確認してください。

index.cgiやindex.phpをトップページにする方法

DirectoryIndex index.php index.html (以下、必要に応じて)

header("Location: http://example.com/mobi/");

この「header」部分は一行で記述です。

これで振り分けが可能でした。

id:ysk331homme

解決致しました。

ありがとうございました!

2010/12/16 20:51:38
id:tama213 No.2

回答回数486ベストアンサー獲得回数30

ポイント35pt

最後のelseの

>header("Location:http://example.com/index.html");

が必要ありません。削除すれば直ります。

これを削除しないと

http://example.com/index.htmlでPCにアクセスしたとき、

http://example.com/index.htmlにリダイレクトするので

無限ロープに陥ります。

id:ysk331homme

解決致しました。

ありがとうございました!

2010/12/16 20:51:47
  • id:tdoi
    一番最後の

    } else {
    ・・・省略・・・
    }

    があると、PCでアクセスしたときに、必ずリダイレクトされてしまいます。
    携帯だと正しくリダイレクトされるが、PCだと無限にリダイレクトされるという状況なら、これが原因かと。

    他の状況ならもう少し詳しく状況を説明してもらえますか?
  • id:ysk331homme
    早速のご回答ありがとうございます!

    おっしゃるとおりの状況です。

    この構文をどのように書き換えればPCをリダイレクトさせないようにできるのでしょうか?
  • id:tdoi
    PCのときはそのままアクセスしていいなら、リダイレクトする必要ないのでは?

    if (ドコモ) {
    // 携帯サイトへリダイレクト
    } else if (AU) {
    // 携帯サイトへリダイレクト
    } else if (Softbank) {
    // 携帯サイトへリダイレクト
    }
    PC用のサイト用の処理

    でいいのかと。

    ついでにこの程度なら、理由がなければPHPではなく.htaccessなどで制御してあげた方がいいかと。
  • id:ysk331homme
    PC用の構文は削ってしまえばそれで良かったんですね。
    ありがとうございます!

    あと、すみません、
    質問とは少し違って申し訳ないんですが、
    携帯でのアクセスはそのままアクセスさせて、
    PCだけ飛ばす場合の構文はお分かりでしょうか??


  • id:psne
    方法はいろいろありますが、携帯として判別するほうが手間が少なくなるので、
    リダイレクト部分をフラグに置き換え、最後にフラグにてリダイレクトするのが分りやすいと思います。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません