.htaccess Redirect - nur m. vorne anhängen

Tommy57

Erfahrenes Mitglied
Hallo, ich habe sehr viele URLs (mehrsprachig + mehrere Entwickler). Nun möchte ich für alle URLs eine mobile Version zur Verfügung stellen, in dem ich ein "m." vorne als subdomain setze.

Ich habe dafür folgenden Code gefunden:

Code:
RewriteCond %{HTTP_ACCEPT} "text\/vnd\.wap\.wml|application\/vnd\.wap\.xhtml\+xml" [NC]
RewriteCond %{REQUEST_URI} ^/$
RewriteRule ^ http://m.domain.com%{REQUEST_URI} [R,L]

Ich würde diesen Code nun gerne so anpassen, dass für ALLE URLs "m." nur angehangen wird, wenn es noch nicht vorne dran steht.

Gruß, Tommy
 
Danke SpiceLab für die schnelle Antwort.

Kann ich das dann kombinieren?

Ich kenn mich mit .htaccess nicht aus. Ich erzwinge für einige URLs das www. Kann ich alle URLs so auflisten:

Code:
RewriteCond %{HTTP_HOST} ^domain.com [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]
RewriteCond %{HTTP_HOST} ^domain.de [NC]
RewriteRule ^(.*)$ http://www.domain.de/$1 [L,R=301]
RewriteCond %{HTTP_HOST} ^domain.ru [NC]
RewriteRule ^(.*)$ http://www.domain.ru/$1 [L,R=301]
RewriteCond %{HTTP_HOST} ^domain.it [NC]
RewriteRule ^(.*)$ http://www.domain.it/$1 [L,R=301]
...

RewriteCond %{HTTP_ACCEPT} "text\/vnd\.wap\.wml|application\/vnd\.wap\.xhtml\+xml" [NC]
RewriteCond %{HTTP_HOST} !^m\.domain\.com$ [NC]
RewriteRule ^ http://m.domain.com%{REQUEST_URI} [R,L]
RewriteCond %{HTTP_HOST} !^m\.domain\.de$ [NC]
RewriteRule ^ http://m.domain.de%{REQUEST_URI} [R,L]
RewriteCond %{HTTP_HOST} !^m\.domain\.ru$ [NC]
RewriteRule ^ http://m.domain.ru%{REQUEST_URI} [R,L]
RewriteCond %{HTTP_HOST} !^m\.domain\.it$ [NC]
RewriteRule ^ http://m.domain.it%{REQUEST_URI} [R,L]
...


Gruß, Tommy
 
Danke SpiceLab für die schnelle Antwort.

Kann ich das dann kombinieren?

Ich kenn mich mit .htaccess nicht aus. Ich erzwinge für einige URLs das www. Kann ich alle URLs so auflisten:

Code:
RewriteCond %{HTTP_HOST} ^domain.com [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]
RewriteCond %{HTTP_HOST} ^domain.de [NC]
RewriteRule ^(.*)$ http://www.domain.de/$1 [L,R=301]
RewriteCond %{HTTP_HOST} ^domain.ru [NC]
RewriteRule ^(.*)$ http://www.domain.ru/$1 [L,R=301]
RewriteCond %{HTTP_HOST} ^domain.it [NC]
RewriteRule ^(.*)$ http://www.domain.it/$1 [L,R=301]
...

RewriteCond %{HTTP_ACCEPT} "text\/vnd\.wap\.wml|application\/vnd\.wap\.xhtml\+xml" [NC]
RewriteCond %{HTTP_HOST} !^m\.domain\.com$ [NC]
RewriteRule ^ http://m.domain.com%{REQUEST_URI} [R,L]
RewriteCond %{HTTP_HOST} !^m\.domain\.de$ [NC]
RewriteRule ^ http://m.domain.de%{REQUEST_URI} [R,L]
RewriteCond %{HTTP_HOST} !^m\.domain\.ru$ [NC]
RewriteRule ^ http://m.domain.ru%{REQUEST_URI} [R,L]
RewriteCond %{HTTP_HOST} !^m\.domain\.it$ [NC]
RewriteRule ^ http://m.domain.it%{REQUEST_URI} [R,L]
...
Bin leider auch nicht der diplomierte .htaccess-Guru :( Für den Hausgebrauch aber alle mal gut :D

Und mit multiplen Country-Code-Top-Level-Domains (ccTLD) musste ich mich bislang auch noch nicht 'rumschlagen :cool:

Aber, wenn ich mir das so anschaue, sagt mir mein grundlegendes Verständnis von .htaccess und mod_rewrite, dass nicht jede einzelne ccTLD (.com/.de/...) beim Namen genannt werden muss, um RewriteCond -> RewriteRule auf sie anwenden zu können. Das sollte eigentlich ein regulärer Ausdruck erledigen können.

Die 17 gezeigten Zeilen würden somit auf 5 schrumpfen, wenn ich es richtig überblicke, und mich nicht verzählt habe :D

Dieser "universelle" Code müsste dann auch nicht mehr gewartet werden, wenn zukünftig weitere ccTLDs eingerichtet werden.

[edit]Tipp-Ex[/edit]
 
Zuletzt bearbeitet:
Ja, ich weiß. Da gibt es auch ein paar vordefinierte Werte wie {HTTP_HOST} und so. Ich kenn die nur leider nicht.

Wäre natürlich optimal, wenn man sagen könnte, wenn kein "www.", "dev." oder "m." vorne steht, soll er "www." vorsetzen und wenn kein "m." vorne dran steht und es sich um ein Handy handelt, soll er ein "m." vorne dran setzen.
 
Hi

nicht von mir erstellt, hab das irgendwo einmal gefunden...
Code:
RewriteCond %{HTTP_USER_AGENT} (android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|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|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|bumb|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(40|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]
(gehört zusammen, siehe das "OR")
 
Also, www. gilt erstmal per default für alle Besucher, die nicht mit mobilen Geräten im Netz unterwegs sind.

Auch hier, wie schon vorhin bei m. , per Negation definiert, dafür aber in kürzerer Fassung, um den ganzen ccTLDs aus dem Weg zu gehen :D
Code:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
Im Anschluß folgt die Umleitung zur mobilen Version:
Code:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
RewriteCond %{HTTP_HOST} !^m\. [NC]
RewriteCond %{HTTP_ACCEPT} "text\/vnd\.wap\.wml|application\/vnd\.wap\.xhtml\+xml" [NC]
RewriteRule ^(.*)$ http://m.%{HTTP_HOST}/$1 [R=301,L]
Mit dev. weiss ich hier gerade nichts anzufangen :(

Aber weil's für die Entwickler gedacht ist, vllt. eher sie über einen (PHP)Login dorthin schicken? :cool:

[edit]Tipp-Ex[/edit]
 
Zuletzt bearbeitet:
Hi

nicht von mir, hab das irgendwo einmal gefunden...
Code:
RewriteCond %{HTTP_USER_AGENT} (android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|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|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|bumb|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(40|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]
(gehört zusammen, siehe das "OR")
Könnte von hier stammen: http://www.kaempf-nk.de/webseitengestaltung/blog/mobile-webseiten-umleitung.html :cool::D
 
Zurück