إعادة توجيه الأجهزة المحمولة إلى الإصدار البديل من موقعي

StackOverflow https://stackoverflow.com/questions/1118581

سؤال

لدينا نسخة بديلة من موقع الويب جاهز للأجهزة المحمولة. المحتوى الذي نخدمه مختلف ويعمل بشكل جيد.

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

فكرنا في استخدام عرض شاشة الجهاز - ولكن ما يحدث إذا كان الجهاز المحمول لا يدعم JavaScript. كيف يمكننا استنشاد هذا؟

هل كانت مفيدة؟

المحلول

يمكنك استخدام قاعدة بيانات وصف الجهاز (مثل Wurfl.) والتي ستعترف بجهاز العميل من رؤوس الطلب. يمكنك بعد ذلك الاستعلام عن قاعدة البيانات أن تقرر ما إذا كان الجهاز يمكنه التعامل مع موقعك (مثل دعم JavaScript، أو هو الشاشة الكبيرة بما فيه الكفاية) قبل أن تقرر ما إذا كنت تريد إعادة توجيهها إلى موقع مختلف.

أنت لا تذكر بيئتك، ولكن لوازم Wurfl Apis ل Java و PHP، وربما الآخرين أيضا. إذا لم يكن هناك تطبيق API المزود، فلا يزال بإمكانك استخدام Wurfl، ولكن عليك تحليل ومعالجة بيانات XML بنفسك.

نصائح أخرى

الوسائط = "يده" لا يعمل مع الهواتف الذكية الحديثة مثل iPhone الذي يتظاهر بأنه مستعرض لسطح المكتب (يستخدم نوع وسائط الشاشة).

http://detectmobilebrowser.com/المصدر المجاني والمفتوح، لديه مدقق وكيل مستخدم شامل للمستخدم المتوفرة في العديد من اللغات - جافا سكريبت، فب، ASP.NET، روبي، إلخ.

إذا كنت تبحث عن إعادة توجيه إلى موقع محمول باستخدام JavaScript، فقد لاحظت أن Wurfl يحتوي أيضا على حل لتلك التي سيسمح لك بإجراء اكتشاف جانبي الخادم مع JavaScript.

<script type='text/javascript' src="//wurfl.io/wurfl.js"></script>

سيتم تركك كائن JSON يشبه:

{
     "complete_device_name":"Apple iPhone 6",
     "is_mobile":true,
     "form_factor":"Smartphone"
}

يمكنك بعد ذلك استخدام هذا:

if (WURFL.is_mobile === true) {
    window.location.replace("http://stackoverflow.com");
}

لا أعتقد أن هناك طريقة جيدة / أنيقة للكشف عن قيام المستخدم بتنشيط جافا سكريبت.

IMO، الأفضل هو سرد وكيل المستخدم: هنا هي قائمة وكيل المستخدم، والتي تبدو كاملة تماما (باللغة الفرنسية، للأسف).

فقط ضع هذا في رأسك:

<script type="text/javascript">
 <!--
  if (screen.width <= 700) {
  window.location = "http://www.mobile-site.com";
  }
 //-->
</script>

فقط حول شاشات الكمبيوتر كل شخص أعلى من Threshhold من 700 بكسل ولكن يمكن تغيير هذا vaule. لا يوجد هاتف أو قرص موجود أعلى من 700 بكسل (على الأقل لا أعرف أي)، لذا فإن جميع الفصحات المتنقلة ستعيد توجيه إلى موقع هاتفك المحمول.

بديل ل Wurfl. يكون كشف المحمول, ، فئة فب للكشف عن:

  • لوح
  • متحرك
  • IOS.
  • ذكري المظهر
  • المتصفحات
  • وأكثر بكثير

لذلك في حالة Wurfl. لا تفعل ما تحتاجه، يمكنك دائما التحقق من ذلك.

الاتفاق مع Skaffman، قاعدة بيانات جهاز أخرى deviceatlas.. وبعد عليك أن تدفع مقابل هذا واحد.

إذا كان الجهاز لا يدعم JS، فمن الأفضل أن تفكر في حل جانب الخادم و Wurfl. يمكن أن يساعد API نحو هذا الاتجاه.

في بعض الأحيان نريد تجنب الإصدار مع هذا النوع من النهج (مثل صفحات التخزين المؤقت وكيل عكسي ولا تدع إعادة التوجيه إلى إصدار الهاتف المحمول) أو نحتاج إلى حل سريع مع العلم أن جميع الأجهزة الحديثة تقريبا تعمل في الوقت الحاضر دعم JS.

لهذا السبب، كتبت برنامج JS يدعى "redirection_mobile.js" الذي يكتشف وكيل المستخدم للمتصفح وإعادة التوجيه إلى الإصدار المحمول من موقعك إذا كنت تستطيع الوصول إليها من جهاز محمول.

في بعض الحالة التي تريد إعادة توجيهها من جهاز محمول إلى إصدار سطح المكتب (مثل مع رابط "انتقل إلى الموقع الرئيسي")، سيتوصل البرنامج النصي بذلك وبمجرد الانتهاء من الجلسة، ستحصل على إصدار الهاتف المحمول مرة أخرى وبعد

يمكنك العثور على التعليمات البرمجية المصدر على Github هنا http://github.com/sebarmeli/js-redirection-mobile-site. ويمكنك قراءة المزيد من التفاصيل في أحد مقالتي هنا:

http://blog.sebarmeli.com/2010/11/02/How-To-Rectirect-your-Site-To-Abile-version-through-javascript/

بسيط:

<link rel="alternate" media="handheld" href="WEBSITE HERE">

ضع ذلك في قسم الرأس.

هنا هو حل العمل

RewriteEngine On
RewriteBase /

#http://stackoverflow.com/questions/3680463/mobile-redirect-using-htaccess
# Check if mobile=1 is set and set cookie 'mobile' equal to 1
RewriteCond %{QUERY_STRING} (^|&)mobile=1(&|$)
RewriteRule ^ - [CO=mobile:1:%{HTTP_HOST}]

# Check if mobile=0 is set and set cookie 'mobile' equal to 0
RewriteCond %{QUERY_STRING} (^|&)mobile=0(&|$)
RewriteRule ^ - [CO=mobile:0:%{HTTP_HOST}]

# cookie can't be set and read in the same request so check
RewriteCond %{QUERY_STRING} (^|&)mobile=0(&|$)
RewriteRule ^ - [S=1]

# Check if this looks like a mobile device
RewriteCond %{HTTP:x-wap-profile} !^$ [OR]
RewriteCond %{HTTP_USER_AGENT} "android|blackberry|ipad|iphone|ipod|iemobile|opera mobile|palmos|webos|googlebot-mobile" [NC,OR]
RewriteCond %{HTTP:Profile}       !^$
RewriteCond %{QUERY_STRING} !^mobile=0(?:&|$)
# Check if we're not already on the mobile site
RewriteCond %{HTTP_HOST}          !^m\.
# Check to make sure we haven't set the cookie before
RewriteCond %{HTTP:Cookie}        !\mobile=0(;|$)
# Now redirect to the mobile site
RewriteRule ^ http://m.yourdomain.com%{REQUEST_URI} [R,L]

# Go back to full site
RewriteCond %{HTTP_HOST} ^m\.
RewriteCond %{QUERY_STRING} (?:^|&)mobile=0(?:&|$)
RewriteRule ^ http://yourdomain.com%{REQUEST_URI} [R,L]

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [NC,L]

RewriteRule ^.*$ index.php [NC,L]
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top