Blog Web & Design

Rediriger ses pages 404 sur WordPress

Sous wordpress, il est parfois necessaire de rediriger une page inexistante (page 404) vers une autre page.

En général cela est utilisé lorsque l’URL d’une page à été modifiée, ce qui à pour résultat d’afficher une page avec une erreur 404, qui est la page indiquant qu’aucun contenu WordPress n’a été trouvé.
Pour résoudre ce problème, dans un soucis d’optimisation SEO, on a donc besoin d’indiquer au navigateur la nouvelle adresse.

Ces lignes sont à rajouter dans le fichier functions.php de votre thème WordPress :

Besoin d’un spécialiste WordPress pour votre projet ? Contactez-moi

1. Une première fonction pour retouver l’adresse utilisateur

La fonction PHP qui va nous aider à trouver l’adresse actuelle sur laquelle se trouve le visiteur.

// get current URL
function wp458_get_current_URL() {
	$current_url  = 'http';
	$server_https = $_SERVER["HTTPS"];
	$server_name  = $_SERVER["SERVER_NAME"];
	$server_port  = $_SERVER["SERVER_PORT"];
	$request_uri  = $_SERVER["REQUEST_URI"];
	if ($server_https == "on") $current_url .= "s";
	$current_url .= "://";
	if ($server_port != "80") $current_url .= $server_name . ":" . $server_port . $request_uri;
	else $current_url .= $server_name . $request_uri;
	return $current_url;
}

C’est une fonction PHP classique, vous retourant l’URL de destination du visiteur

2. La fonction de redirection WordPress

// Template Redirect
add_action( 'template_redirect', 'wp458_custom_redirect', 1 );
function wp458_custom_redirect() {
	// si c'est une 404
    if(is_404()){
    	$thislink = wp458_get_current_URL(); // L'adresse actuelle
    	$sitelink = get_bloginfo('url'); // Adresse du site
    	if($thislink == $sitelink . '/wordpress/'){
    		wp_redirect( $sitelink . '/tag/wordpress/' );
			die;
    	}
    }	
}

Cette fonction utilise le système de redirection de WordPress à savoir wp_redirect, qu’on utilise seulement dans la condition où la page serait de type 404 grâce à is_404().

Attention le Hook « Template_redirect » est très important ici car il se lance avant le chargement de la page. Cela évite notamment les ereurs « Headers already sent » en PHP.


Si vous avez des questions ou une idée pour améliorer ce code, n’hésitez pas à me contacter.

Dernière mise à jour le Auteur : Thomas Dufranne

Ce contenu vous a-t-il été utile ?

Merci pour votre avis !

Si vous pensez pouvoir aider d'autres personnes, pensez à partager le contenu

Merci pour votre avis !

Désolé que vous n'ayez pas trouvé votre réponse.

Je vous invite à me poser vos question par commentaire ou par e-mail !

Repondre

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.