Comment rediriger une page Web avec PHP

1. Utilisez la fonction header() avec exit()

En PHP, vous pouvez utiliser la fonction header () (elle envoie un en-tête HTTP brut à un client) pour effectuer une redirection d'une page Web vers une autre.

Il est possible d'utiliser la fonction header () pour envoyer un nouvel en-tête HTTP, mais celui-ci doit être envoyé au navigateur avant tout HTML ou texte (par exemple, avant la remarque).

Exemple

<?php
  header('Location: //www.w3docs.com');
// or die();
 
  exit();
?>

L'utilisation de exit () sur une redirection est d'empêcher la page d'afficher le contenu restant (c'est-à-dire des pages restreintes).

2. Utilisez la function header avec ob_start() et ob_end_flush()

Exemple

<?php 
ob_start();
 //this should be first line of your page header('Location: target-page.php'); ob_end_flush();
 //this should be last line of your page ?>

3. Utilisez la fonction Helper

Exemple

<?php

function Redirect($url, $permanent = false)
{
  header('Location: ' . $url, true, $permanent ? 301 : 302);
  exit();
}
Redirect('//www.w3docs.com/', false);
Remarque: Cette fonction ne supporte pas le code de status 303

Cet exemple est plus flexible:

<?php

function redirect($url, $statusCode = 303)
{
  header('Location: ' . $url, true, $statusCode);
  die();
}

4. Il y a des cas particuliers si vous exécutez en CLI (les redirections ne peuvent pas se produire et ne devraient donc pas sortir ()) ou si votre serveur Web exécute PHP en tant que CGI (F)

Exemple

<?php

function Redirect($url, $code = 302)
{
  if (strncmp('cli', PHP_SAPI, 3) !== 0) {
    if (headers_sent() !== true) {
      if (strlen(session_id()) > 0) {
        // if using sessions

        session_regenerate_id(true); // avoids session fixation  	attacks

        session_write_close(); // avoids having sessions lock other requests
      }

      if (strncmp('cgi', PHP_SAPI, 3) === 0) {
        header(sprintf('Status: %03u', $code), true, $code);
      }

      header('Location: ' . $url, true, preg_match('~^30[1237]$~', $code) > 0 ? $code : 302);
    }
    exit();
  }
}

En savoir plus sur la façon de rediriger les pages Web avec HTML, JavaScript, Apache et Node.js