Zur Navigation

Umleitung auf mobile Seite mit ?tpl=mobile

1 faststart

Hallo,

ich habe die Seite

www.webseite.de

und die mobile Version

www.webseite.de?tpl=mobile

dazu kommen diverse Unterseiten, wie z.B.

www.webseite.de/garten/spaten.html

und deren mobile-Version: www.webseite.de/garten/spaten.html?tpl=mobile

D.h. jede einzelne Seite hat mit ?tpl=mobile ihr mobiles Template.

Ich möchte nun per htaccess umleiten, das Mobiluser bei Aufruf jeder Seite direkt auf ihre ?tpl=mobile-Version kommen.

Dazu habe ich Folgendes probiert:

RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} iphone|ipad|android|blackberry|windows\ phone [NC]
RewriteCond %{HTTP_HOST} ^(www)\.webseite\.de$
RewriteRule ^(.*)$ %{HTTP_HOST}/$1?tpl=mobile

Leider ohne Erfolg.

Im Forum habe ich diverse Beiträge zur Umleitung mit .m-Domains und mobile-Ordnern gefunden, leider keinen zur URl-Erweiterung.

Vielen Dank schon einmal für Hilfe!

Viele Grüße,
Christian

29.05.2021 12:01

2 Jörg Kruse

Da muss mindestens noch eine Abbruchbedingung rein, so dass nicht weitergeleitet wird, wenn im Query String bereits ein tpl=mobile enthalten ist. Andernfalls gibt es eine Endlosweiterleitung.

RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} iphone|ipad|android|blackberry|windows\ phone [NC]
RewriteCond %{HTTP_HOST} ^www\.webseite\.de$
RewriteCond %{THE_REQUEST} !tpl=mobile
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1?tpl=mobile [QSA]

Das [QSA] stellt zudem sicher, dass etwaige alte Parameter wieder hinten drangehängt werden.

... und vor dem %{HTTP_HOST} fehlt noch ein https://, sonst wird das Weiterleitungsziel nicht als URL sondern als relativer Pfad interpretiert

29.05.2021 12:26

3 faststart

Super, vielen Dank für die schnelle und korrekte Antwort! :-) Die Abbruchbedingung habe ich ganz vergessen...

Es funktioniert nun bei allen URl, bis auf direkte Produktseiten. Ich habe vor Jahren einmal Folgendes rewritet:

www.meinshop.de/garten/spaten.html

zu

www.meinshop.de/spaten.html

sowie auch

www.meinshop.de/garten/jahreszeiten/spaten.html

zu www.meinshop.de/spaten.html

Das war dazu gedacht um duplicate content zu vermeiden, da das System selbst ansonsten gleichen Seiten mehrere Urls gegeben hat.

Für diese Seiten wird mir im Umleitungschecker leider "Exceeded maximum number of redirects." angezeigt.

An redirects in der htaccess habe ich noch:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>

was aber nur die Umschreibung für https und www ist.

sowie

RewriteRule ^sitemap(.*)\.html$ /shop_content.php?coID=8 [qsappend,L]
RewriteCond %{REQUEST_URI} (.*):::([_0-9]+):([_0-9]+)\.html$
RewriteRule (.*):::([_0-9]+):([_0-9]+)\.html$ /index.php?cPath=$2&page=$3 [qsappend,L]
RewriteCond %{REQUEST_URI} (.*):::([_0-9]+)\.html$
RewriteRule (.*):::([_0-9]+)\.html$ /index.php?cPath=$2 [qsappend,L]
RewriteRule (.*)::(.+)\.html$ /product_info.php?products_id=$2 [qsappend,L]
RewriteRule (.*):_:([0-9]+)\.html$ /shop_content.php?coID=$2 [qsappend,L]

Was wohl des Übels Anfang ist.

Weißt du wo ich ansetzen muss, damit "die maximale Anzahl an Redirects" nicht überschritten wird?

Vielen Dank fürs Anschauen und viele Grüße!

29.05.2021 19:01

4 Jörg Kruse

Ich habe vor Jahren einmal Folgendes rewritet:

www.meinshop.de/garten/spaten.html

zu

www.meinshop.de/spaten.html

sowie auch

www.meinshop.de/garten/jahreszeiten/spaten.html

zu www.meinshop.de/spaten.html

Wie genau? in den von dir geposteten htaccess Abschnitten kann ich keinen passenden Rewrite entdecken.

Wenn dabei der Query String tpl=mobile entfernt wird, braucht es dort ggf. auch ein QSA-Flag, um diesen zu erhalten.

29.05.2021 20:40

5 faststart

Hallo,
weitere Rewrite-Regeln in der htaccess habe ich leider nicht.

Vom Shopsystem standardmäßig wird immer www.meinshop.de/garten/spaten.html als URl vergeben.

Ich hatte Folgendes eingebaut, damit jede Produkt-URl ohne Kategorie ist:

/*
 * FUNCTION shopstat_hrefLink
 */
function shopstat_hrefLink($cat_desc, $product_name, $product_id)
{
    $link = "";

/* Keine Kategorienebenen im Produktlink
    if(shopstat_hrefSmallmask($cat_desc))
        {
        $link .= shopstat_hrefSmallmask($cat_desc)."/";
        }
*/
    $link .= shopstat_hrefMask($product_name)."::".$product_id.".html";

    return($link);
}
/*
 * FUNCTION shopstat_hrefCatlink
 */

D.h. also nur der Bereich auskommentiert. Kann man da ansetzen oder ist das Problem der Endlosweiterleitung vielleicht irgendwo anders?

Danke schon einmal für Hilfe!

30.05.2021 11:27

6 Jörg Kruse

Wie ist denn die Reihenfolge der RewriteRules? die Weiterleitungen sollten zuerst kommen, und ein L-Flag haben:

RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1?tpl=mobile [R,L,QSA]

Und leitet die Shop-Software intern (in PHP) weiter? die Funktion shopstat_hrefLink() baut ja nur die URL zusammen.

Was passiert, wenn man mit nicht-mobilen User Agent die URL www.meinshop.de/spaten.html?tpl=mobile aufruft?

30.05.2021 12:05 | geändert: 30.05.2021 12:06

7 faststart

perfekt! Mit L-Flag funktioniert alles einwandfrei.

Vielen Dank noch einmal, da wäre ich nicht drauf gekommen

30.05.2021 19:14

Beitrag schreiben (als Gast)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]