---
title: "Rediriger ses pages 404 sur WordPress"
id: "236"
type: "post"
slug: "rediriger-page-404-wordpress"
published_at: "2020-07-04T23:03:04+00:00"
modified_at: "2020-07-10T15:22:30+00:00"
url: "https://www.mistersize.com/blog/rediriger-page-404-wordpress/"
markdown_url: "https://www.mistersize.com/blog/rediriger-page-404-wordpress.md"
excerpt: "Sous wordpress, il est parfois necessaire de rediriger une page inexistante (page 404) vers une autre page."
taxonomy_category:
  - "Blog"
taxonomy_post_tag:
  - "Snippet"
  - "WordPress"
---

[j'aime](#partage)
[Commenter](#comments-list)
Taggué dans : [Snippet](https://www.mistersize.com/tag/snippet/)
, [WordPress](https://www.mistersize.com/tag/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](https://www.mistersize.com/contact/)

## 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 »](https://developer.wordpress.org/reference/hooks/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.
