Wie leiten Sie den iPhone / Android-Browser zu m.example.com?

8

Ich habe eine spezielle Codierung, die nur für HTML5-Browser funktioniert (einfaches Geolocation-Zeug). Ich möchte iPhone- und Android-Benutzer auf die Version m.example.com meiner Website umleiten. Wie geht das am besten?

JoshFinnie
quelle

Antworten:

2

Sie können die UserAgent-Erkennung oder jQuery.support () verwenden. Da Sie nach bestimmten Funktionen suchen, können Sie beide kombinieren, um das zu erhalten, was Sie möchten.

UserAgent ist möglicherweise die beste Wahl. Führen Sie dies mit einer .htaccess-Datei aus, um Ihre http-Anforderungen zu reduzieren und möglicherweise Ihre Hauptwebsite vor der Umleitung zu flashen, wenn die Verbindung langsam oder die Leistung von Javascript langsam ist.

Sie können die (meistens) vollständige Liste der mobilen Benutzeragenten auf der Wikipedia-Seite sehen . Wie Sie sehen, gibt es Ähnlichkeiten zwischen Herstellern und Versionen, nach denen Sie in einem regulären Ausdruck suchen könnten.

halloandre
quelle
3
Dies ist das Back-End, das JS vorzuziehen ist, insbesondere da die Bandbreite auf Mobilgeräten sehr gering ist. Die .htaccess-Methode ist die beste Wahl, gefolgt von einer PHP / ASP / was auch immer Backend-Methode
Mark Henderson
2

Ihre Frage besteht aus zwei Teilen: Umleitung und HTML5-Kompatibilität.

Umleitung

Ich verwende die folgende .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]

Für PHP können Sie diese Bibliothek verwenden: http://detectmobilebrowsers.mobi/ ... aber ich empfehle dringend, htaccess für die Verarbeitungszeit und Sicherheit zu verwenden.

Weitere Beispiele finden Sie hier

http://ohryan.ca/blog/2009/02/18/revisiting-mobile-redirection-using-htaccess-rewrite-rules/

Browserfunktionen

Da mein Android-Handy kein Problem mit HTML5 mit Geolocation-Code hat. Sie können die Modernizr Javascript Library verwenden , um die Funktionen des Client-Browsers zu ermitteln, der Ihre Seite besucht.

Die ausgezeichnete HTML5-Boilerplate- Vorlage verwendet modernizr out of the box, um diese Art von Anforderungen zu unterstützen.

Meine Meinung ist: Ich schlage vor, die htaccess-Methode für alles außer den neuesten Telefonen und Browsern zu verwenden, die von modernizr unterstützt werden, und Android- und iPhone-Benutzer von Modernizr auf Unterstützung für HTML5-Funktionen überprüfen zu lassen und den "Rest" auf Ihre "ohne Geolocation" -Version umzuleiten.

Modernizr Beispiel:

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

Hoffe das hilft

jflaflamme
quelle
1

Wenn Sie mit PHP codieren, können Sie $_SERVER['HTTP_USER_AGENT']den UserAgent-Header überprüfen, der von fast allen wichtigen Mobilgeräten an das PHP-Skript gesendet wird. Dann vergleichen Sie einfach den Wert dieses Headers mit der substrFunktion mit dem, was er im Inneren haben muss.

Beispielsweise verfügen Apple-Geräte immer über Unterzeichenfolgen für "iPhone" oder "iPad". Android-Geräte haben immer "Android". In fast jedem mobilen Gerät ist in diesem Header die Unterzeichenfolge "mobil" aufgeführt.

Paul Pi
quelle