2012-03-08 18 views
0

シナリオ:ウェブサイトにphpの「モバイル検出」機能が設定されています。モバイルデバイスが検出された場合、またはバージョン=モバイル(Cookieが設定されている)の場合、ページのモバイルバージョンが(php経由で)表示されます。モバイルデバイスが検出されない場合、またはバージョン=フル(Cookieを設定する)の場合は、フルバージョンのサイトが(php経由で)表示されます。これはすべて私のドメインのexample.com上で行われます。ユーザーがサブドメインを閲覧した場合、PHPがモバイル版にリダイレクトされます

.example.comにアクセスしたユーザーに、モバイル版のサイトを強制的に許可したい(Cookieを以前に設定した場合)。

m.example.comをwww.example.comにリダイレクトする方法はありますかにはversion = mobileと設定されていますか? 「m」サブドメインからwww.example.com/index.php?version=mobileにリダイレクトされたURLを使用して、DNS設定でこれを実行しようとしましたが、ページが表示されても?version = mobileはURLにあり、私のPHPのMobile Detectはこれを拾いませんし、まだフルバージョンのページをレンダリングしています。

EDIT :: FYI私はLinuxサーバーを使用しています。

+0

私はmod_rewriteを使用したい –

+0

PHPやリダイレクトなしで達成しようとしていることを処理する別の方法はhttp://mediaqueri.es/を使用しています – evasilchenko

+0

@AlexLunix - 説明できますか?ありがとう:) – adamdehaven

答えて

2

これは、あなたがこの

$iphone = strpos($_SERVER['HTTP_USER_AGENT'],"iPhone"); 
$android = strpos($_SERVER['HTTP_USER_AGENT'],"Android"); 
$palmpre = strpos($_SERVER['HTTP_USER_AGENT'],"webOS"); 
$berry = strpos($_SERVER['HTTP_USER_AGENT'],"BlackBerry"); 
$ipod = strpos($_SERVER['HTTP_USER_AGENT'],"iPod"); 

if ($iphone || $android || $palmpre || $ipod || $berry == true) 
{ 
    echo "<script>window.location='http://m.site.com'</script>"; 
} 
+0

私はすでにモバイル検出機能を持っています。私はあなたが私の質問を誤解したと思いますか?私はm.example.comをwww.example.comにリダイレクトし、モバイル版を強制します。通常、ユーザーがサブドメインからリダイレクトされている場合は、(携帯端末の検出のため)適切なバージョンが表示されますが、強制的に強制します。あなたの意見にhtaccessはどのように使用しますか? – adamdehaven

+1

なぜあなたは 'header(" Location:http://m.site.com ");'?あなたは以前にも「setcookie」することができました。 – Basti

+0

@Basti - 私の質問をもう一度読んでください。モバイル版とフルバージョンはwww.example.comドメインにあります。 PHPは、デバイスに基づいてレンダリングするバージョンを検出します。彼らがアドレスバーに「m.example.com」と入力すると、モバイル版を強制的に使用したいと思います。 – adamdehaven

0

ためにhtaccessファイルを使用する場合、おそらくそれは、このために手遅れだが、私は問題はクッキーであるかもしれないと思うより効率的で、PHPコードです。クッキーの値は、設定した瞬間には変更されず、スクリプトの後に変更されます。したがって、スクリプトの先頭にCookieの値を 'mobile'に設定してスクリプトがそれに従って動作する場合、値はまだ 'mobile'に設定されていない可能性があります。最初に変数にクッキーの値を書き込んだ後、その変数を使用してクッキーに頼るのではなく、その変数でクッキーの値を再生する方が良いでしょう。したがって、クッキーは最初に変数を 'フル'(デフォルト)またはリダイレクトからNULLに設定しますが、$ _GETは変数を 'モバイル'に設定し、クッキーを 'モバイル'に設定するための命令を後で設定します。その後、残りのコードは変数に従って動作します。

0

あなたのページには、データベースやその他の手段からプルする場合を除き、モバイル版とフルバージョンの両方のコードが含まれている必要があります(プリティURLを例として考えてください)。次に、あなたのコードをIF/ELSE文として書くことができます。

関連する問題