• Hallo zusammen,

    ich habe mal eine Frage. Und zwar passen wir nun die ganzen Permalinks der Seiten neu an. Das Problem ist, wenn es irgendwo interne Verlinkungen vorhanden sind, funktionieren diese nicht mehr. Und es kommt ein 404-Fehler.

    Das komische dabei ist, nicht alle interne Verlinkungen gehen auf die 404-Fehler-Seite, sondern nur manche. Die anderen leiten die alte URl weiter auf die neue. Das sieht man auch kurz im Browser.

    Könnt ihr euch das erklären? Und wie würde man richtig die Url ändern damit interne Links auch richtig weiterleiten.

    Gruß
    Juri

Ansicht von 6 Antworten – 1 bis 6 (von insgesamt 6)
  • Moderator Bego Mario Garde

    (@pixolin)

    Moderator (nicht mehr aktiv)

    Im Verzeichnis wp-includes gibt es eine Datei canonical.php, die regelt, wie WordPress URLs behandelt, zu denen es keine vorhandene Seite gibt. Zum Beispiel wird angenommen, dass ein Leerschritt am Ende einer URL irrtümlich eingegeben wurde und statt einfach einen 404-Fehler auszugeben wird die URL entsprechend korrigiert. Die Datei enthält auch die Funktion redirect_guess_404_permalink(), mit der bei 404-Fehlern geraten wird, welche Adresse eigentlich gemeint war. Dabei wird vor allem geschaut, ob die Adresse z.B. Hinweise auf einen Post Type oder ein Datums-Archiv enthält oder ob es einen ähnlichen Namen in der Datenbank gibt.

    Diese automatische Weiterleitung lässt sich auch abstellen. Dazu fügst du folgendes Snippet in die functions.php eines Child Themes (oder besser: als Snippet im Plugin Code Snippets) ein:

    add_filter('redirect_canonical', 'no_redirect_on_404');
    function no_redirect_on_404($redirect_url)
    {
        if(is_404())
        {
            return false;
        }
        return $redirect_url;
    }

    Die Änderung gilt dann allerdings für alle fehlerhaften Adressen.

    Für alle Adressen, die nicht über die Funktion redirect_guess_404_permalink() abgefangen werden können, kannst du manuell einen 301-Redirect einfügen, z.B. mit dem Plugin Simple 301 Redirects.

    Thread-Starter inkom

    (@inkom)

    Hallo, danke für deine Antwort und die Info diesbezüglich.

    An sich möchte ich gar nicht die Weiterleitung ausschalten. Das ist eher gut, dass WordPress die alte URL weiterleitet auf die neue.

    Bloß es macht dies nicht bei allen Seiten. Und das ist das was mich stört und was irretiert.

    Folgendes Szenario:
    Seite A hat einige Interne Links.
    z.B. Link 1 -> Seite B, Link 2 -> Seite C, Link3 -> Seite D.

    Nun jedoch bennen ich die Seiten um bzw der Permalink der Seite B, C und D.
    Link 1 wird richtig weiter geleitet die beiden anderen zwei Links leiten nicht weiter sondern rufen die 404-Fehler-Seite auf.

    Und hier ist mein Problem, wie kann ich richtig die Seiten-Permalinks umbennen damit alle internen Links die auf die Seite verweißen auch funktionieren oder weiterleiten.

    Moderator Bego Mario Garde

    (@pixolin)

    Moderator (nicht mehr aktiv)

    Hast du dir denn die Funktion, die ich oben genannt habe, in der Datei mal angeschaut?

    …
    if ( get_query_var('name') ) {
      $where = $wpdb->prepare("post_name LIKE %s", 
        $wpdb->esc_like( get_query_var('name') ) . '%');
    …

    „wird in der URL einer nicht gefundenen Seite als Parameter ein Name angegeben, suche in der Datenbank nach Beiträgen, die mit diesem Namen anfangen.“

    Gibst du http://deinedomain.de/beispiel ein, wird der nächstbeste Treffer angezeigt, der mit „beispiel“ anfängt, also z.B. http://deinedomain.de/beispiel-seite. Gibst du hingegen http://deinedomain.de/seite ein, werden Beiträge gefunden, die mit „seite“ anfangen, also z.B. http://deinedomain.de/seitenraster/ – aber nicht http://deinedomain.de/beispiel-seite/

    Thread-Starter inkom

    (@inkom)

    Okay das würde auch erklären, wieso einige Links richtig weitergeleitet wurden.

    Aber woher weiß dann WordPress welche Seite genau damit gemeint ist?
    Also wenn ich den Link http://deinedomain.de/beispiel aufrufe und zusätzlich aber auch folgende Seiten hätte, wie http://deinedomain.de/beispiel-seite, http://deinedomain.de/beispiel-seite1, http://deinedomain.de/beispiel-seite2

    Welche URL wird dann genommen die richtige Seite (http://deinedomain.de/beispiel-seite2) oder die erste zutreffende (http://deinedomain.de/beispiel-seite).

    Danke.

    Moderationshinweis: Antworten, die mehrere Links ethalten, landen automatisch in der Moderation. Wir kümmern uns dann darum – bitte nicht sechsmal den (mehr oder weniger) gleichen Inhalt posten. Danke, Bego

    Thread-Starter inkom

    (@inkom)

    Okay das erklärt es dann. Eine kurze Frage hätte ich noch.

    Und zwar wird immer das erste zutreffende Ergebnis zurückgegeben oder woher weiß WordPress welche URL die richtige ist. Wenn ich z.B. /beispiel aufrufe und es sollte auf beispiel-seite2 weiterleiten ich aber noch folgenge Seiten hätte /beispiel-seite und /beispiel-seite1.

    Welche Url wird dann tatsächlich aufgerufen? In dem Fall gibt es ja mehrere Übereinstimmungen.

    Thread-Starter inkom

    (@inkom)

    Eine kurze Anmerkung. Ein kurzer Hinweißtext wäre hier sinnvoll damit man weiß, dass, der Beitrag abgesendet wurde und die Moderation sich darum kümmert.

Ansicht von 6 Antworten – 1 bis 6 (von insgesamt 6)

Das Thema „Permalink & SEO“ ist für neue Antworten geschlossen.