現在、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に強い方、宜しくお願いいたします。
まずは.htaccessの記述があれば、再度確認してください。
index.cgiやindex.phpをトップページにする方法
DirectoryIndex index.php index.html (以下、必要に応じて)
header("Location: http://example.com/mobi/");
この「header」部分は一行で記述です。
これで振り分けが可能でした。
} else {
・・・省略・・・
}
があると、PCでアクセスしたときに、必ずリダイレクトされてしまいます。
携帯だと正しくリダイレクトされるが、PCだと無限にリダイレクトされるという状況なら、これが原因かと。
他の状況ならもう少し詳しく状況を説明してもらえますか?
おっしゃるとおりの状況です。
この構文をどのように書き換えればPCをリダイレクトさせないようにできるのでしょうか?
if (ドコモ) {
// 携帯サイトへリダイレクト
} else if (AU) {
// 携帯サイトへリダイレクト
} else if (Softbank) {
// 携帯サイトへリダイレクト
}
PC用のサイト用の処理
でいいのかと。
ついでにこの程度なら、理由がなければPHPではなく.htaccessなどで制御してあげた方がいいかと。
ありがとうございます!
あと、すみません、
質問とは少し違って申し訳ないんですが、
携帯でのアクセスはそのままアクセスさせて、
PCだけ飛ばす場合の構文はお分かりでしょうか??
リダイレクト部分をフラグに置き換え、最後にフラグにてリダイレクトするのが分りやすいと思います。