PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Apache - mobile Rewrite



metallex
13.05.14, 12:03
Hallo zusammen,

ich möchte gerne mit einer rewrite Regel alle mobilen Nutzer von unserer Desktop-Seite auf die mobile Variante lenken. Das sollte wohl so funktionieren:



RewriteEngine On

RewriteBase /

RewriteCond %{HTTP_USER_AGENT} (android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iem obile|ip(hone|od)|iris|kindle|lge\ |maemo|midp|mmp|mobile.+firefox|netfront|opera\ m(ob|in)i|palm(\ os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\. (browser|link)|vodafone|wap|windows\ (ce|phone)|xda|xiino [NC,OR]

RewriteCond %{HTTP_USER_AGENT} ^(1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a\ wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar (ch|go)|as(te|us)|attw|au(di|\-m|r\ |s\ )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|b umb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1\ u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp(\ i|ip)|hs\-c|ht(c(\-|\ |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac(\ |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a |jbro|jemu|jigs|kddi|keji|kgt(\ |\/)|klon|kpt\ |kwc\-|kyo(c|k)|le(no|xi)|lg(\ g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t (\-|\ |o|v)|zz)|mt(50|p1|v\ )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran |owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v\ )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(4 0|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98 )|w3c(\-|\ )|webc|whit|wi(g\ |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-) [NC]

RewriteRule ^$ http://m.example.de [R,L]


Allerdings soll der Smartphone/Tablet Nutzer auch die Möglichkeit haben, wieder zur "klassischen Ansicht" nach http://www.example.de zu wechseln. Ist sowas ohne Javascript überhaupt möglich?

Vielen Dank!

marce
13.05.14, 12:47
Du könntest einen Get-Parameter für den Rückweg einfügen, den Du dann konsequent in der Applikation mitschleifst und über eine RewriteCond auswertest - alternativ auch über ein Cookie.

metallex
13.05.14, 13:31
Die Cookie Lösung hört sich vernünftig an. Wo finde ich Infos wie ich das bauen muss? In der mod_rewrite Doku bin ich auf die Schnelle nicht fündig geworden.

Vielen Dank.

Edit: Bin fündig geworden. :) Danke für den Ansatz!

marce
13.05.14, 13:43
Für Nachfolger:
z.B. http://www.sitepoint.com/forums/showthread.php?726692-mod_rewrite-redirect-on-if-no-cookie
... und einiges mehr per Google.

DrunkenFreak
13.05.14, 17:51
Ich würde die ganze Geschichte eher in PHP/HTML/CSS machen, anstatt mich da mit dem Webserver rumzuquälen. Du bist dort wesentlich flexibler unterwegs.

marce
13.05.14, 21:56
hm, 2 komplett verschiedene Webseiten lassen sich so aber leichter verwalten...

DrunkenFreak
13.05.14, 22:08
Finde ich persönlich nicht. Am Anfang direkt die Abfrage, welcher Browser kommt, und dann umleiten mit header('Location: ...') bei Bedarf oder einfach weiter laufen lassen.

Möglichkeit mit CSS wäre auch die Größe der Seite dynamisch an die Browsergröße anzupassen. Das wäre bei zwei völlig unterschiedlichen Seiten aber nicht unbedingt wünschenswert.

Edit: Problem ist natürlich, wenn man keine Ahnung von Webdesign hat. Dann sollte man sich doch lieber mit dem Webserver rumquälen. :)

marce
13.05.14, 22:12
Wenn Du komplett Zugriff auf den Code der Webseite hast - ok, kann man machen.

Im anderen Fall bist Du allerdings davon unabhängig.

So oder so - irgendwie musst Du einen Schalter einbauen, der sich unabhängig von der Browserabfrage schalten lassen kann - sei es in einer .htaccess, mod_rewrite, cookie, index.php, Proxy, ...