Mal wieder .htaccess :-/

Hallo,

ich stehe vor folgendem Problem und komme einfach nicht weiter.
(Ich schreibe das ganze mal sehr ausführlich, damit es - falls es gelöst wird - auch anderen Suchenden helfen kann)
Ich will meine Webseite nun endlich Mobil-tauglich machen und das möchte ich über einen .htaccess-rewrite machen.

Wäre ja eigentlich einfach:

RewriteEngine on
RewriteCond %{REQUEST_URI} !^/m/.*$

Dann kommen die verschiedenen Conditions, die herausfinden, ob es einen mobilen Useragent gibt,

RewriteCond %{HTTP_USER_AGENT} (android|bb\d+|meego).+mobi... blablabla

und dann:

RewriteRule ^(.*)$ http://www\.domain\.de/m/$1 [R=301,L]

Dadurch landet alles, was vorher noch nicht im Unterverzeichnis …/m/ war, im Unterverzeichnis …/m/. Zum Beispiel www.domain.de/bilder.html wird zu www.domain.de/m/bilder.html. Richtig?

Jetzt möchte ich es aber auch ermöglichen, dass jemand mit dem Handy auf einen Link klickt, z.B.:

<a href='wow.php?m=0'>Zur Desktop-Version</a>

und dadurch am Beginn des htaccess ein Cookie gesetzt wird, als nächstes überprüft wird, ob es einen Cookie gibt, und wenn es den Cookie gibt, wird die rewriterule nicht angewandt, in dem Beispiel würde dann z.B. die Webseite: www.domain.de/wow.php angezeigt werden, auch auf dem Handy und eben NICHT www.domain.de/m/wow.php
Alle weiteren Links ohne die Variable „m“ werden ebenfalls nicht mehr umgeleitet.

Außerdem soll es auch umgekehrt gehen. Wenn z.B.

<a href='wow.php?m=0'>Zur Mobil-Version</a>

angeklickt wird, soll die Seite: www.domain.de/m/wow.php angezeigt werden und alle weiteren Links ohne die Variable „m“ werden ab da wieder umgeleitet.

Ich habe nun woanders folgende Schnippsel gefunden:

RewriteCond %{QUERY_STRING} (^|&)m=0(&|$)
RewriteRule ^ - [CO=mredir:0:www.website.com]

dann kamen wieder die Conditions für mobile Agents, und dann:

RewriteCond %{HTTP_HOST}          !^m\.
RewriteCond %{QUERY_STRING} !(^|&)m=0(&|$) 
RewriteCond %{HTTP_COOKIE}        !^.*mredir=0.*$ [NC]
RewriteRule ^ http://m.website.com [R,L]

Das scheint irgendwie den Teil mit den Cookies zu regeln, allerdings als Umleitung zur Basisdomain und vor allem ohne die Möglichkeit wieder zurück zur mobilen Domain zu gelangen.

Kann mir bitte jemand zeigen, wie ich diese beiden Blöcke verbinde, so dass der von mir gewünschte Effekt herauskommt? Vielleicht gibt es ja sogar einen noch einfacheren Weg?

Vielen Dank schonmal im Voraus für eure Mühe! Ihr seid klasse :smile:

Alles Liebe,
Dirk.

Hi!

Habe leider keine Ahnung!

Hoffe, Du bekommst brauchbarere Antworten!

Ciao,

Toni

kurz und knackig
mit htaccess kann man nichts setzen .

du kannst also nur auf was verweisen und dann z.b.
mit dem server script das setzen .

ich finde die Methode auch sehr unschick und
befürchte das du dein programm nicht anpassen willst .

wenn der user auf bla bla bla klickt , dann kannst du ja ein cookie ändern .
ist der nicht auf dem mobil wert wird zur standard seite gewechselt .

oder du machst das eben mit den parametern .

Ich frage Dich also , warum über htaccess etwas regeln
was eigentlich das Programm regeln soll ?

Hmm, also Du meinst, ich soll das lieber mit php und ohne htaccess regeln? Quasi auf der index.php den Browser abfragen und wenn der mobil ist, dann direkt in ein Unterverzeichnis werfen?

du kannst gerne mit htaccess die parameter regeln
also bei /m/index.php?m=1… passiert nichts
bei /m/index.php?m=0… gehts nach /index.php?m=0…

genauso wie bei
also bei /index.php?m=0… passiert nichts
bei /index.php?m=1… gehts nach /m/index.php?m=1…

dann kannst du alle parameter mitnehmen ohne stress zu haben

und wenn du in deiner index.php gleich am anfang abfragst obs ein mobiler browser ist und kein m=0 vorliegt dann halt
location.href = „/m/?m=1“ ;

finde es aber anstrengend extra noch ein mobil ordner zu haben , aber da hat jeder so sein können und geschmack .

Also das heißt, das wäre dann so, wie ich im ersten Post geschrieben habe:

RewriteEngine on
RewriteCond %{REQUEST_URI} !^/m/.$
Dann kommen die verschiedenen Conditions, die herausfinden, ob es einen mobilen Useragent gibt,
RewriteCond %{HTTP_USER_AGENT} (android|bb\d+|meego).+mobi… blablabla
und dann:
RewriteRule ^(.
)$ http://www.domain.de/m/$1 [R=301,L]

Und wie verwurstel ich dann das, was Du vorgeschlagen hast:

also bei /m/index.php?m=1… passiert nichts
bei /m/index.php?m=0… gehts nach /index.php?m=0…

genauso wie bei
also bei /index.php?m=0… passiert nichts
bei /index.php?m=1… gehts nach /m/index.php?m=1…

dann kannst du alle parameter mitnehmen ohne stress zu haben

und wenn du in deiner index.php gleich am anfang abfragst obs ein mobiler browser ist und kein m=0 vorliegt dann halt
location.href = „/m/?m=1“ ;

Also wo setze ich den Teil hin, der die Variable m ausliest und daraus eine Condition macht? Vermutlich direkt an den Anfang, oder? Könnte mir diese Zeilen jemand schreiben? Das wäre supernett.
Verdammt, ich komme mit php ja echt gut klar, aber die htaccess Zeugs raubt mir noch den letzten Nerv :frowning:

für blablabla.php?option=com_user

RewriteCond %{QUERY_STRING} =option=com_user [NC]

O.K., Danke :smile: