Catch 404 nach dem Ändern der Permalink-Struktur von /% postname% / in /% category% /% postname% /

7

Ich habe vor einiger Zeit eine Website erstellt und nach einigen Tagen wurden einige Beiträge von Suchmaschinen indiziert. Heute habe ich die Permalink-Struktur von /%postname%/auf geändert /%category%/%postname%/.

Danach erscheint ein, wenn Leute von Suchmaschinen auf meine Website kommen 404 page not found error. Ich möchte alle alten URLs ohne 404-Fehler in die neue Kategorie-Basis-URL ändern.

Wie kann ich es tun?
Ich benutze übrigens das Yoast Plugin.

prashant
quelle
Haben Sie versucht, Ihre Umschreiberegeln zu löschen?
Manny Fleurmond

Antworten:

7

Dies geschieht, weil WordPress Ihren alten Beitragsnamen jetzt als Kategorienamen liest - und diese Kategorie nicht finden kann.

Lösung: Filtern Sie 404_templateund versuchen Sie, den Beitrag und seinen Permalink zu finden. Dann umleiten.

<?php  # -*- coding: utf-8 -*-
/* Plugin Name: Redirect to category */

add_filter( '404_template', 't5_redirect_to_category' );

function t5_redirect_to_category( $template )
{
    if ( ! is_404() )
        return $template;

    global $wp_rewrite, $wp_query;

    if ( '/%category%/%postname%/' !== $wp_rewrite->permalink_structure )
        return $template;

    if ( ! $post = get_page_by_path( $wp_query->query['category_name'], OBJECT, 'post' ) )
        return $template;

    $permalink = get_permalink( $post->ID );

    wp_redirect( $permalink, 301 );
    exit;
}
Fuxia
quelle
Vielen Dank, dass Sie dies geteilt haben. Es hat mir so viel Zeit gespart, 301 Weiterleitungen zu schreiben!
Zach Russell
Hallo, wo soll ich die obige Funktion hinzufügen? separate Datei? oder innerhalb von functions.php? Ich benutze das Genesis-Thema.
JDesigns
@ Jay Ein separates Plugin. Aus diesem Grund enthält der Code einen Plugin-Header. :)
Fuxia
0

Sie müssen 301 Weiterleitungen von Ihren alten Seiten-URLs zu den neuen hinzufügen.

Dieses Plugin sollte das erreichen, was Sie wollen: http://wordpress.org/extend/plugins/redirection/

Da Änderungen an Ihren Permalinks erkannt und automatisch Weiterleitungen hinzugefügt werden, müssen Sie zu Ihrer alten Permalink-Struktur zurückkehren, das Plugin aktivieren und dann Ihre Permalinks auf die neue Struktur aktualisieren.

Hoffe das hilft.

Greif
quelle