Zur Navigation

.mobil umleitung

1 Vincent30

Hallo,

ich habe ein Problem mit der Smartphone Version meines Internetauftritts.

Und zwar hatte ich bis kurzem folgende Umleitung auf der index.html meiner Homepage:

<script>
if(screen.availWidth<500){
location.href = '/iphone/index.html';
}
</script>

War ganz nett, weil nicht nur iphones sondern auch alle Smartphones die eine kleinere Auflösung als 500px Breite haben, auf die "iphone/index.html" weitergeleitet wurden.

Was mich gestört hat war der W3C Fehler aber vor allem das auf der smartphone Version ein Link zur Webversion der Homepage gesetzt werden sollte. Allerdings funktionierte das nicht, weil man dann permanent auf die smartphone Version weitergeleitet wurde.

Ich habe mir jetzt ne Subdomain eingerichet, aber wie man das mit dem Link zur Webversion über htaccess löst, habe ich bisher in keinem Forum gefunden.

Vielleicht kann mir ja hier jemand weiterhelfen?

21.03.2011 15:22

2 Jörg

Wenn ich dich richtig verstanden habe, klickt der User auf den Link zur Webversion, wird aber wegen der dortigen Weiterleitung wieder zurückgeleitet?

Du könntest ein Cookie setzen, wenn jemand die Smartphone-Version aufruft. In der Webversion fragst du dann ab, ob dieser Cookie existiert und leitest in dem Fall nicht weiter.

21.03.2011 18:52

3 Vincent30

Hast Du ein Tutorial oder was Ähnliches wie man das mit den Cookies händelt?

Würde das hier nicht auch funktionieren?

RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain\.de$
RewriteCond %{HTTP_USER_AGENT} "acs|alav|alca|amoi|audi|aste|avan|benq|bird|blac|blaz|brew|cell|cldc|cmd-" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "dang|doco|eric|hipt|inno|ipaq|java|jigs|kddi|keji|leno|lg-c|lg-d|lg-g|lge-" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "maui|maxo|midp|mits|mmef|mobi|mot-|moto|mwbp|nec-|newt|noki|opwv" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "palm|pana|pant|pdxg|phil|play|pluc|port|prox|qtek|qwap|sage|sams|sany" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "sch-|sec-|send|seri|sgh-|shar|sie-|siem|smal|smar|sony|sph-|symb|t-mo" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "teli|tim-|tosh|tsm-|upg1|upsi|vk-v|voda|w3cs|wap-|wapa|wapi" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "wapp|wapr|webc|winw|winw|xda|xda-" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "up.browser|up.link|windowssce|iemobile|mini|mmp" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "symbian|midp|wap|phone|pocket|mobile|pda|psp" [NC]
RewriteCond %{HTTP_USER_AGENT} !macintosh [NC] #*SEE NOTE BELOW
RewriteRule ^$ http://mobile.domain.de/ [L,R=302]

23.03.2011 14:55

4 Jörg

Hast Du ein Tutorial oder was Ähnliches wie man das mit den Cookies händelt?

In PHP gibt es zum Setzen von Cookies die Funktion setcookie():

http://php.net/manual/de/function.setcookie.php

Weitere Erläuterungen finden sich hier:

http://www.php-einfach.de/tuts_php_cookies.php

Würde das hier nicht auch funktionieren?

RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain\.de$
RewriteCond %{HTTP_USER_AGENT} "acs|alav|alca|amoi|audi|aste|avan|benq|bird|blac|blaz|brew|cell|cldc|cmd-" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "dang|doco|eric|hipt|inno|ipaq|java|jigs|kddi|keji|leno|lg-c|lg-d|lg-g|lge-" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "maui|maxo|midp|mits|mmef|mobi|mot-|moto|mwbp|nec-|newt|noki|opwv" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "palm|pana|pant|pdxg|phil|play|pluc|port|prox|qtek|qwap|sage|sams|sany" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "sch-|sec-|send|seri|sgh-|shar|sie-|siem|smal|smar|sony|sph-|symb|t-mo" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "teli|tim-|tosh|tsm-|upg1|upsi|vk-v|voda|w3cs|wap-|wapa|wapi" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "wapp|wapr|webc|winw|winw|xda|xda-" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "up.browser|up.link|windowssce|iemobile|mini|mmp" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "symbian|midp|wap|phone|pocket|mobile|pda|psp" [NC]
RewriteCond %{HTTP_USER_AGENT} !macintosh [NC] #*SEE NOTE BELOW
RewriteRule ^$ http://mobile.domain.de/ [L,R=302]

Das würde die Browser weiterleiten, die einen entsprechenden User-Agent-String senden. Kann sein, dass du damit nicht alle mobilen Browser erwischt. Und wenn von denen jemand auf den besagten Link klickt, wird er auch wieder zurückgeleitet.

24.03.2011 07:42 | geändert: 24.03.2011 07:43

5 Vincent30

Also müsste ich hier ( http://mobile.domain.de/index.html )
über dem head Bereich den Cookie setzen:

<?php
setcookie("joergscookie","xyz",0);
?>


und dann in www.domain.de/index.html auslesen ( wenn kein Cookie existiert ->Weiterleitung...wenn einer existiert weiter machen )

<?php
if (!isset($_COOKIE['joergscookie']))
{
header('Location: http://mobile.domain.de/index.html'); exit;
}

else
{
!= ""
}
?>


Aber das Cookie auslesen würde doch nichts bringen, wenn
danach in der index.html meiner domain wieder die Weiterleitung
steht, oder? Kann man das oben in das Cookie-Auslesen einbauen? Wenn ja, wie?
<script>
if(screen.availWidth<500){
location.href = '/iphone/index.html';
}
</script>


Außerdem liegen die beiden index.html ja nicht im gleichen Verzeichnis, kann der Cookie dann überhaupt übermittelt werden?

24.03.2011 10:17

6 Jörg

<?php
if (!isset($_COOKIE['joergscookie']))
{
header('Location: http://mobile.domain.de/index.html'); exit;
}

else
{
!= ""
}
?>

Statt des sinnfreien '!= ""' musst du in dem else Block den Inhalt deiner Webseite ausgeben. Wegen dem "exit;" könntest du dir den else block allerdings auch gleich ganz sparen

24.03.2011 20:54 | geändert: 24.03.2011 20:55

7 Vincent30

klar, das exit is nen copy&paste fehler. aber wie gebe den inhalt der webseite aus? du merkst schon, ich bin ein php-noob ;)

und korreliert das nicht mit dieser weiterleitung: <script>
if(screen.availWidth<500){
location.href = '/iphone/index.html';
}
</script>

bzw. der .htaccess weiterleitung?

wenn der cookie der mobile subdomain gefunden wird, bleibt er ja zunächst auf der domain.de/index.html aber wird dann doch wieder weitergeleitet, oder nicht?

25.03.2011 09:23

8 Jörg

Sinnvoll wäre es wohl, die JavaScript-Weiterleitung mit der Cookie-Abfrage zu kombinieren. Auf folgende Weise würde die Weiterleitung nur dann eingebaut, wenn der Cookie nicht vorhanden ist:

<?php if (!isset($_COOKIE['deincookie'])) { ?>
<script>
if(screen.availWidth<500){
location.href = '/iphone/index.html';
}
</script>
<?php } ?>

25.03.2011 18:37

9 Vincent30

Also erstmal 1000 Dank bis dahin, leider funktioniert das nicht. :(

Kannst Du mal nen Blick drüber werfen?

www.d*rmas*nc*.d*

Die mobile Version liegt zur Zeit noch im Unterordner und noch nicht auf der Subdomain: www.d*rmas*nc*.d*/iphone/index.php

Irgendwie muss ja noch nen else {
Auslesen des html } ?>
rein...aber ich weiß nicht wie man das macht.


Kann man Dir auch eine Spende zukommen lassen?

28.03.2011 11:49 | geändert: 28.03.2011 12:25

10 Jörg

Kannst Du mal nen Blick drüber werfen?

www.d*rmas*nc*.d*

Wenn ich denn wüsste, was sich hinter den Sternchen verbirgt

Irgendwie muss ja noch nen else {
Auslesen des html } ?>
rein...aber ich weiß nicht wie man das macht.

Das muss nicht zwangsläufig rein. Der Inhalt kann ja immer vorhanden sein - wenn das Script drin ist, wird dann aber halt weitergeleitet

Kann man Dir auch eine Spende zukommen lassen?

Wenn du möchtest, kanst du für die Entwicklung meiner Forensoftware spenden (siehe unter 4.):

http://jkbb.de/lizenz

28.03.2011 13:47 | geändert: 28.03.2011 13:50