HTML5ブラウザー(単純な地理位置情報)でのみ機能する特別なコーディングがあります。 iPhoneおよびAndroidユーザーをm.example.comバージョンのWebサイトにリダイレクトしたい。これを行う最良の方法はどのようなものですか?
userAgent検出を使用するか、jQuery.support()を使用できます。特定の機能を探しているので、2つを組み合わせて必要なものを取得できます。
実際、UserAgentが最善の策かもしれません。 .htaccessファイルを使用してこれを行い、httpリクエストを削減します。接続が遅い場合やJavaScriptのパフォーマンスが遅い場合は、リダイレクトの前にメインサイトをフラッシュします。
wikipediaページ でモバイルユーザーエージェントの(ほぼ)完全なリストを見ることができます。ご覧のとおり、正規表現で検索できる製造元とバージョンには類似点があります。
あなたの質問は2つの部分に触れます..リダイレクトとhtml5の互換性。
リダイレクト
私は次の.htaccessを使用しています:
RewriteCond %{HTTP_ACCEPT} "text\/vnd\.wap\.wml|application\/vnd\.wap\.xhtml\+xml" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "sony|symbian|nokia|samsung|mobile|windows ce|epoc|opera" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "mini|nitro|j2me|midp-|cldc-|netfront|mot|up\.browser|up\.link|audiovox" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "blackberry|ericsson,|panasonic|philips|sanyo|sharp|sie-" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "portalmmm|blazer|avantgo|danger|Palm|series60|palmsource|pocketpc" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "smartphone|rover|ipaq|au-mic,|alcatel|ericy|vodafone\/|wap1\.|wap2\.|iPhone|Android" [NC]
RewriteRule ^(.*)$ http://m.example.com/ [L,R=302]
PHPの場合、このライブラリを使用できます: http://detectmobilebrowsers.mobi/ ...しかし、処理時間とセキュリティのためにhtaccessを使用することを強くお勧めします。
ここにいくつかの追加の例を見つけることができます
http://ohryan.ca/blog/2009/02/18/revisiting-mobile-redirection-using-htaccess-rewrite-rules/
ブラウザ機能
私のAndroid電話は、位置情報コードを含むhtml5で問題ありません。 Modernizr Javascript Library を使用して、ページにアクセスするクライアントブラウザーの機能を検出することを検討できます。
優れた HTML5ボイラープレート テンプレートは、この種のニーズをサポートするためにすぐにmodernizrを使用しています。
私の意見は、modernizrがサポートする最近の携帯電話とブラウザを除くすべてにhtaccessメソッドを使用し、AndroidおよびiPhoneユーザーがhtml5機能サポートについてModernizrによってチェックされ、ジオロケーションなし」バージョン。
Modernizrの例:
if (Modernizr.geolocation) {
// do stuff
}else{
// propose mobile version
}
お役に立てれば
PHPを使用してコーディングしている場合、$_SERVER['HTTP_USER_AGENT']
を使用してUserAgentヘッダーを確認できます。これは、ほとんどの主要なモバイルデバイスからPHPスクリプトに送信されます。次に、このヘッダーの値をsubstr
fuctionと比較して、内部に必要なものと比較します。
たとえば、Appleデバイスには常に「iphone」または「ipad」のサブストリングがあります。 Androidデバイスには常に「Android」があります。ほとんどすべてのモバイルデバイスには、このヘッダーに「モバイル」サブストリングがリストされます。