1. Herzlich willkommen bei WPDE.org, dem grössten und ältesten deutschsprachigen Community-Forum rund um das Thema WordPress. Du musst angemeldet oder registriert sein, um Beiträge verfassen zu können.
    Information ausblenden

Redirects enden in Endlosschleife

Dieses Thema im Forum "Konfiguration" wurde erstellt von bennyn, 23. Juli 2010.

  1. bennyn

    bennyn Member

    Registriert seit:
    13. Februar 2010
    Beiträge:
    15
    Zustimmungen:
    0
    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:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Was aber nicht funktioniert ist:

    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Dieser Redirect endet in einer Endlosschleife, nämlich:

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

    Genauso wenig funktioniert (Endlosschleife):

    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Dieser Redirect geht aber:

    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Was ich erreichen muss ist:
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    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
     
  2. Ammaletu

    Ammaletu Well-Known Member
    Ehrenmitglied

    Registriert seit:
    14. Juli 2007
    Beiträge:
    4.696
    Zustimmungen:
    0
    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:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    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:

    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
     
  3. bennyn

    bennyn Member

    Registriert seit:
    13. Februar 2010
    Beiträge:
    15
    Zustimmungen:
    0
    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:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Damit funktioniert der Redirect auch, ist allerdings client-seitig.

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

    Sebstian Active Member

    Registriert seit:
    5. März 2009
    Beiträge:
    37
    Zustimmungen:
    0
    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:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    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
     
  5. Ammaletu

    Ammaletu Well-Known Member
    Ehrenmitglied

    Registriert seit:
    14. Juli 2007
    Beiträge:
    4.696
    Zustimmungen:
    0
    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:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
     
  6. bennyn

    bennyn Member

    Registriert seit:
    13. Februar 2010
    Beiträge:
    15
    Zustimmungen:
    0
    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 anfangen -und auch enden muss. Das sieht dann wie folgt aus:

    RedirectMatch 301 ^/a/b$ http://www.domain.de/a/b/c

    Das ^ gibt an, dass die URL mit dem folgenden String beginnen muss. Das $-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! :)
     
  7. Ammaletu

    Ammaletu Well-Known Member
    Ehrenmitglied

    Registriert seit:
    14. Juli 2007
    Beiträge:
    4.696
    Zustimmungen:
    0
    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. ;)
     
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden