web-dev-qa-db-fra.com

Capture 404 après modification de la structure de lien permanent de /% postname%/à /% catégorie% /% postname% /

J'ai créé un site il y a quelque temps et après quelques jours, certains messages ont été indexés par les moteurs de recherche. Aujourd'hui, j'ai changé la structure de lien permanent de /%postname%/ à /%category%/%postname%/.

Après cela, lorsque les internautes accèdent à mon site à partir de moteurs de recherche, un 404 page not found error apparaît. Je souhaite remplacer toutes les anciennes URL par la nouvelle URL de base de catégorie sans erreur 404.

Comment puis-je le faire?
Au fait, j'utilise le plugin Yoast.

7
prashant

Cela se produit car WordPress lit votre ancien nom de poste en tant que nom de catégorie - et ne peut pas trouver cette catégorie.

Solution: filtrez 404_template et essayez de trouver la publication et son lien permanent. Puis redirigez.

<?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;
}
7
fuxia

Vous devez ajouter les redirections 301 de vos anciennes URL de page aux nouvelles.

Ce plugin doit accomplir ce que vous voulez: http://wordpress.org/extend/plugins/redirection/

Comme il détecte les modifications apportées à vos liens permanents et ajoute automatiquement des redirections, vous devrez revenir à votre ancienne structure de liens permanents, activer le plug-in, puis mettre à jour vos liens permanents vers la nouvelle structure.

J'espère que cela t'aides.

0
Griffin