Problem mit htaccess redirect - Wie löse ich bestimmte Umleitungsproblematiken?

  • Folgendes Problem.
    Eine Seite wurde umgezogen und die alle Pfade wurden 1 zu 1 übernommen, außer dass die Adressen nun kein .htm mehr haben, aus http://www.beispseite.de/unterseite.htm wurde also http://www.beispseite.de/unterseite

    Damit jemand, der noch die Adresse http://www.beispseite.de/unterseite.htm nicht auf einer 404-Seite landet, habe ich in der .htaccess den Befehl

    Code
    RedirectMatch (.*)\.htm$ $1/

    eingefügt. Das funktioniert auch.

    Was ich aber nun gern noch hätte, wäre, dass wenn jemand sich einfach nur verschreibt, also er statt http://www.beispseite.de/unterseite zum Beispiel http://www.beispseite.de/untresiete derjenige auf der Startseite landet.

    Bevor ich den Redirect drin hatte, hatte ich das durch eine Zeile in der header.php gelöst:

    PHP
    <?php if( is_404( )) { header("Location: /",TRUE,301); } ?>

    Beides zusammen scheint sich aber nicht zu vertragen, da im Test der Browser recht schnell die Fehlermeldung
    Fehler 310 (net::ERR_TOO_MANY_REDIRECTS): Zu viele Umleitungen.

    ausspuckte.

    Wie löse ich das am geschicktesten und möglichst ohne irgendwelche Plugins?

    Vielleicht noch zur Info, in der .htaccess steht momentan auch schon das hier:

    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]

    </IfModule>

    • 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

  • Mal davon abgesehen, daß

    Code
    RedirectMatch permanent (.*)\.htm$ $1/


    besser ist, sollte es eigentlich funktionieren. Ich habe das bei meinem Testblog mal genau so nachgestellt und da gibt es keine Probleme mit der Weiterleitung.

    Kannts Du mal einen konkreten Link zu Deiner Seite posten?

    Gruß
    Ingo

    Wenn ich helfen konnte, bitte [ Gefällt mir ] klicken. :-)

  • Der Link zur Seite ist http://www.dettmer-verlag.de/ Allerdings ist aktuell nur der Code im Header aktiv, der alle nicht (mehr) existierenden URLs auf die Startseite umleitet. Die Zeile in der .htaccess habe ich momentan rausgenommen, solange es die oben erwähnte Weiterleitungsfehlermeldung gibt.

    Vielen Dank

    Gruß
    Claudia

  • Das Problem tritt im Moment auch auf, wenn ich eine nicht existierende Seite (ohne .htm) aufrufe.

    Man wird zunächst per 301 auf die Startseite umgeleitet, dann aber wieder per 302 auf eine Seite /Default/, von dort wieder per 301 auf die Startseite usw.

    Steht in der .htaccess sonst noch etwas drin? Sind weitere Plugins aktiv, die sich um Seitenweiterleitungen kümmern?

    Gruß
    Ingo

    Wenn ich helfen konnte, bitte [ Gefällt mir ] klicken. :-)

  • Ich hatte grade noch etwas ausprobiert (Umleitung direkt in der 404.php), vielleicht warst du genau auf der Seite als ich getetest habe, sorry. Aktuell sollte man bei einer nicht existierenden Seite einfach nur auf der Startseite landen /Default/ sollte nicht mehr auftauchen.

    Außer dem Code <?php if( is_404( )) { header("Location: /",TRUE,301); } ?> in der header.php habe ich nichts mehr aktiv. Auch nicht das redirect für die .htm-Seite in der .htaccess.

  • Noch mal zur Klarstellung. Der Umleitungsfehler tritt dann auf, wenn Du diese RedirectMatch-Regel in der .htaccess hast und dann eine nicht existierende Seite aufgerufen wird. Oder tritt er immer auf, wenn die Regel in der .htaccess steht?

    Kannst Du die Regel mal bitte wieder reinschreiben damit ich sehen kann, was genau passiert.

    Gruß
    Ingo

    Wenn ich helfen konnte, bitte [ Gefällt mir ] klicken. :-)

  • Der Fehler, also die Meldung "Fehler 310 (net::ERR_TOO_MANY_REDIRECTS): Zu viele Umleitungen." tritt auf, wenn ich gleichzeitig

    in der .htaccess

    Code
    RedirectMatch (.*)\.htm$ $1/

    benutze

    und in der header.php folgendes stehen habe:

    PHP
    <?php if( is_404( )) { header("Location: /",TRUE,301); } ?>

    Aktuell ist nur der Code in der header.php aktiv.

    Was ich erreichen will ist, dass jemand der noch einen alten Pfad mit .htm am Ende hat auf die ja bestehende korrekte Seite ohne .htm umgeleitet wird und jemand der sich z.B. einfach nur verschreibt auf die Startseite umgeleitet wird.

    Vielen Dank nochmal für deine Mühe

    Gruß
    Claudia

  • Was Du erreichen willst, ist mir schon klar. :-)

    So, wie Du die Deine Vorgehensweise beschreibst, sollte es normalerweise auch ohne Umleitungsfehler funktionieren. Ich sehe da erstmal keinen logischen Fehler.

    Angenommen, Du hast beide Konfigurationen aktiv, also die Weiterleitung der 404-Seiten im Header und die Redirect-Regel in der .htaccess. Tritt dann der Fehler mit den zu vielen Umleitungen immer auf, egal ob Du eine Seite mit .htm oder eine existierende oder nicht existerende Seite aufrufst, oder nur in einem dieser Fälle?

    Es wäre wirklich hilfreich, wenn Du zum Testen die Redirect-Regel wieder in die .htaccess aufnehmen könntest, damit ich sehen kann, was genau passiert.

    Gruß
    Ing

    Wenn ich helfen konnte, bitte [ Gefällt mir ] klicken. :-)

  • Ich habe jetzt beide Regeln wieder aktiv. Das Problem tritt, so wie ich das bisher reproduzieren konnte nur auf, wenn ich eine nicht existierende Seite aufrufen will.

  • Die vollständige .htaccess sieht so aus:

  • Gut, ich habe es jetzt mal getestet. Nun ist wieder der schon oben beschrieben Effekt mit der Weiterleitung per 302 auf /Default/ da, also wechselweise Startseite, dann /Default/ und wieder Startseite usw.

    Da ist irgendwo noch etwas aktiv, was auf /Default/ weiterleitet (Plugin, weiterer Eintrag in der .htaccess, eine Einstellung beim Webhoster). Zumindest sehe ich in der .htaccess -Regel und in der Weiterleitung im Header kein Problem.

    Gruß
    Ingo

    Wenn ich helfen konnte, bitte [ Gefällt mir ] klicken. :-)

  • Dann muss ich wohl noch mehr Ursachenforschung betreiben, bzw.ich hab ein Plugin im Verdacht, mit dem man die Permalinks editieren kann (Permalink Editor) aber das kann ich leider nicht rausschmeißen. Mal schauen, ob ich das irgendwie anders gelöst bekomme.

    Gruß
    Claudia

  • Du kannts auch mal gucken, ob da noch was in einer .htaccess-Datei in einem übergeordneten Verzeichnis steht, sofern Wordpress nicht im Wurzelverzeichnis des Webspace installiert ist. Diese vererben ihre Einstellungen an untergeordnete Verzeichnisse.
    Es könnte auch was mit einer benutzedefinierten Fehlerseite (ErrorDocument) zu tun haben.

    Es ist es meist schwierig bis unmöglich, so einen Fehler von außen zu lokalisieren.

    Gruß
    Ingo

    Wenn ich helfen konnte, bitte [ Gefällt mir ] klicken. :-)

    Einmal editiert, zuletzt von Putzlowitsch (31. Mai 2013 um 20:03)

Jetzt mitmachen!

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