Test de redirection
FR EN ES

Testez vos redirections web et réponses HTTP



La redirection 302

La redirection 302, ou redirection temporaire, indique au navigateur web et aux robots des moteurs de recherche que la page visitée a temporairement changé d’adresse. Les moteurs de recherche conservent l’URL d’origine dans leur index.

On l’utilise typiquement pour une page en maintenance, un test A/B, ou une promotion limitée dans le temps.


Redirection 302 en PHP

À placer au tout début du fichier PHP, avant tout affichage HTML :

<?php
header("Location: https://www.exemple.net/repertoire/page.php");
exit();
?>

Par défaut, PHP envoie un code 302. Pour être explicite :

<?php
header("HTTP/1.1 302 Found");
header("Location: https://www.exemple.net/repertoire/page.php");
exit();
?>


Redirection 302 avec un fichier .htaccess (Apache)

Rediriger une page :

Redirect /repertoire/page-a-rediriger.html https://www.exemple.net/repertoire/page-de-destination.html

Rediriger un répertoire :

Redirect /repertoire https://www.exemple.net/repertoire-de-destination

Rediriger un domaine :

Redirect / https://www.exemple.net/

Avec mod_rewrite :

RewriteEngine On
RewriteRule ^ancienne-page\.html$ /nouvelle-page.html [L,R=302]


Redirection 302 avec Nginx

Rediriger une page :

location = /ancienne-page.html {
    return 302 https://www.exemple.net/nouvelle-page.html;
}

Rediriger temporairement un domaine entier :

server {
    server_name exemple.net;
    return 302 https://www.exemple.net$request_uri;
}


302, 303 et 307 : quelle différence ?

Un point technique important : lorsqu'une requête POST reçoit une réponse 302, tous les navigateurs changent la méthode en GET pour suivre la redirection. Ce comportement est non conforme au RFC original, mais est universellement adopté. Il peut poser problème pour les formulaires et les APIs.

303 See Other — Formalise ce comportement : la redirection se fait toujours en GET, quelle que soit la méthode d'origine. C'est le code recommandé après le traitement d'un formulaire POST (pattern PRG : Post/Redirect/Get) pour éviter la double soumission au rechargement de page.

<?php
// Après le traitement d'un formulaire POST :
http_response_code(303);
header("Location: https://www.exemple.net/confirmation.php");
exit();
?>

307 Temporary Redirect — Identique au 302 mais la méthode HTTP d'origine (POST, PUT…) est obligatoirement conservée. À utiliser dans les APIs REST pour rediriger une requête POST en conservant le corps de la requête.

# Redirection d'endpoint API dans .htaccess :
RewriteEngine On
RewriteRule ^api/v1/(.*)$ /api/v2/$1 [L,R=307]