it-swarm.dev

كيف يمكنك توجيه متصفح iPhone / Android إلى m.example.com؟

لدي بعض الترميز الخاص الذي يعمل فقط لمتصفحات HTML5 (عناصر تحديد الموقع الجغرافي البسيطة). أرغب في إعادة توجيه مستخدمي iPhone و Android إلى إصدار m.example.com من موقع الويب الخاص بي. كيف هي أفضل طريقة للقيام بذلك؟

8
JoshFinnie

يمكنك استخدام اكتشاف وكيل المستخدم ، أو يمكنك استخدام jQuery.support (). نظرًا لأنك تبحث عن وظيفة محددة ، يمكنك الجمع بين الاثنين للحصول على ما تريد.

قد يكون UserAgent بالفعل أفضل رهان. يمكنك القيام بذلك باستخدام ملف htaccess لتقليل طلبات http الخاصة بك ، وربما وميض موقعك الرئيسي قبل إعادة التوجيه في حالة الاتصال البطيء أو أداء جافا سكريبت البطيء.

يمكنك الاطلاع على القائمة الشاملة (غالبًا) لوكلاء مستخدمي الهاتف المحمول على صفحة ويكيبيديا . كما ترون هناك أوجه تشابه بين الشركات المصنعة والإصدارات التي يمكنك البحث عنها في تعبير عادي.

2
helloandre

سؤالك لمس جزأين .. إعادة التوجيه والتوافق 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 boilerplate القالب يستخدم modernizr خارج الصندوق لدعم هذا النوع من الاحتياجات.

رأيي هو: أقترح استخدام طريقة htaccess لكل شيء ما عدا الهواتف الحديثة والمتصفحات التي يدعمها modernizr والسماح Android ومستخدمي iPhone بفحص Modernizr لدعم ميزة html5 وإعادة توجيه "البقية" على جهازك " بدون تحديد الموقع الجغرافي "نسخة.

مثال Modernizr:

 if (Modernizr.geolocation) {
    // do stuff
 }else{
    // propose mobile version 
 }

أتمنى أن يساعدك هذا

2
jflaflamme

إذا كنت تقوم بالتشفير باستخدام PHP ، فيمكنك استخدام $_SERVER['HTTP_USER_AGENT'] للتحقق من رأس UserAgent ، والذي يتم إرساله تقريبًا بواسطة أي جهاز محمول رئيسي إلى PHP البرنامج النصي. ثم فقط قارن قيمة هذا الرأس بـ substr fuction بكل ما يحتاج إليه في الداخل.

على سبيل المثال ، Apple سيكون للأجهزة دائمًا سلاسل فرعية 'iphone' أو 'ipad' ؛ Android سيكون للأجهزة دائمًا "Android". سيكون لكل جهاز محمول تقريباً سلسلة فرعية "جوال" مدرجة في هذا العنوان.

1
Paul Pi