Redirects enden in Endlosschleife

  • Hallo! Ich verwende in meinm WordPress ein Plugin für Mehrsprachigkeit (qTranslate). Dieses Plugin hängt, je nach ausgewählter Sprache, ein "/de/" (Deutsch), "/en/" (Englisch) oder "/fr/" (Französisch) an die URL an. Je nach ausgewählter Sprache.

    Es gibt also folgende URLs:

    Deutsche Webseite: http://localhost/wp/
    Deutsche Webseite: http://localhost/wp/de/
    Englische Webseite: http://localhost/wp/en/
    Französische Webseite: http://localhost/wp/fr/

    Nun muss ich aber einige Hauptseiten auf Unterseiten weiterleiten. Allerdings kann kein WordPress-Redirect-Plugin diese Aufgabe ordentlich für mehrsprachige Webseiten erledigen, weshalb ich mich dazu entschlossen habe, manuelle Redirects in der .htaccess einzufügen. Doch auch dort gibt es Probleme.

    Diese Redirects funktionieren:

    Code
    Redirect /wp/gameinfo http://localhost/wp/de/gameinfo/story
    Redirect /wp/images http://localhost/wp/de/images/screenshots
    Redirect /wp/videos http://localhost/wp/de/videos/trailer

    Was aber nicht funktioniert ist:

    Code
    Redirect /wp/gameinfo http://localhost/wp/gameinfo/story

    Dieser Redirect endet in einer Endlosschleife, nämlich:

    http://localhost/wp/gameinfo/story/story/story/...

    Genauso wenig funktioniert (Endlosschleife):

    Code
    Redirect /wp/en/images http://localhost/wp/en/images/screenshots

    Dieser Redirect geht aber:

    Code
    Redirect /wp/en/news http://localhost/wp/en/gameinfo/characters

    Was ich erreichen muss ist:

    Code
    /wp/gameinfo -> http://localhost/wp/de/gameinfo/story
    /wp/en/gameinfo -> http://localhost/wp/en/gameinfo/story
    /wp/fr/gameinfo -> http://localhost/wp/fr/gameinfo/story

    Doch ich habe ständig Endlosschleifen und weiß nicht mehr weiter. Ich suche daher dringend Hilfe! Vielleicht kennt sich jemand von euch aus.

    Viele Grüße

    Benny

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Die Frage wäre erst mal, wo die Schleifen herkommen. Das ist einfach, denke ich. Ich zitiere mal von hier: http://www.tinyweb.de/local/redirect.html

    "Alle Anfragen für Dokumente, die mit diesem Pfad beginnen, werden mit einer Umleitungsmeldung [...] beantwortet."

    Das hier ist also unweigerlich eine Endlosschleife, weil ja die URL, auf die umgeleitet wird, ebenfalls auf die Umleitung passt.

    Code
    Redirect /wp/gameinfo http://localhost/wp/gameinfo/story

    Lösung: Statt Redirect analog zu den WP-Permalinks RewriteRule nutzen. Da ist der String immer eine Regular Expression, die Du mit ^ und $ begrenzen kannst. Das könnte dann so aussehen:

    Apache Configuration
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^/wp/gameinfo/?$ http://localhost/wp/gameinfo [L]
    </IfModule>
  • Aha. Weil also in "http://localhost/wp/gameinfo/story" der Pfad "http://localhost/wp/gameinfo/" drin steckt, endet eine Umleitung von "http://localhost/wp/gameinfo/" in einer Endlosschleife? Das ist einleuchtend.

    Ich werde mir mal die RewriteRules genauer ansehen. Hoffentlich löst das mein Problem. Momentan habe ich im HTML-Inhalt der Seite "http://localhost/wp/gameinfo/" folgenden Code integriert:

    Code
    <script language ="JavaScript">
    <!--
    window.location.replace('http://localhost/wp/gameinfo/story');
    // -->
    </script>

    Damit funktioniert der Redirect auch, ist allerdings client-seitig.

    Ich melde mich zurück, wenn ich die Lösung habe. Vielen Dank!

  • Bennyn's Lösung klappt super, dennoch würde mich Ammaletu's Lösung auch interessieren. Bei mir ist das Problem genau das selbe, bloß mit anderen Parametern, ich habe die htaccsess lösung für mich versucht zu adaptieren:

    PHP
    RewriteRule ^/photo/baku?$ http://www.sebastian-burger.de/en/photo/baku/photographs [L]

    da passiert aber schlicht weg nix.

    Was muss geändert werden bzw. was ist ggf. besser an der .htaccess Lösung ?! Ist sie schneller oder google verdaulicher ?
    Danke und Grüße, Sebastian

  • Die Lösung per .htaccess ist schon besser als es per JavaScript zu machen. Das kann ja auch abgeschaltet sein, und ja, Google folgt sowas vielleicht auch nicht. Also besser per .htaccess.

    In Deinem Fall kannst Du auch einfach eine RewriteRule nutzen, denke ich, denn der Pfad, auf den Du weiterleiten willst, beginnt ja nicht mit dem, von dem aus Du weiterleitest. Das hier sollte also ausreichen:

    Code
    Redirect /photo/baku http://www.sebastian-burger.de/en/photo/baku/photographs
  • Noch besser finde ich die Lösung über ein RedirectMatch. Das habe ich gestern rausgefunden.

    Wenn man von /a/b auf /a/b/c umleiten möchte, dann entsteht ja eine Endlosschleife, weil in /a/b/c wieder ein /a/b enthalten ist. Über ein RedirectMatch kann man das aber begrenzen. Undzwar kann man sagen, dass die URL (welche umgeleitet werden soll), mit /a/b [COLOR=SeaGreen]anfangen[/COLOR] -und auch [COLOR=Red]enden[/COLOR] muss. Das sieht dann wie folgt aus:

    RedirectMatch 301 [COLOR=SeaGreen]^[/COLOR]/a/b[COLOR=Red]$[/COLOR] http://www.domain.de/a/b/c

    Das [COLOR=SeaGreen]^[/COLOR] gibt an, dass die URL mit dem folgenden String beginnen muss. Das [COLOR=Red]$[/COLOR]-Zeichen begrenzt den String und sagt: "nach /b muss Schluss sein". Deswegen wird http://www.domain.de/a/b/c nicht wieder erneut umgeleitet (Endlosschleife!), weil diese Adresse auf /c endet und nicht auf /b.

    Die RedirectMatch-Regel kann einfach als neue Zeile in die .htaccess-Datei geschrieben werden.

    Viel Spaß beim Umleiten! :)

  • RedirectMatch war mir jetzt nicht geläufig bisher. Funktional ist das aber genau das, was ich mit der RewriteRule weiter oben zum Ausdruck bringen wollte. ;-)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!