PHP header(): funcionamiento y redirect 301 con el encabezado Location

La función PHP header nos permite enviar encabezados sin formato al cliente (robot, navegador…). Es una manera de forzar dicho envío antes de que se lean los encabezados de la propia página.

Sintaxis PHP header()

header ( string [, bool [, int ]] )
  1. Uso: Debe ser puesto antes que ninguna etiqueta html ni líneas en blanco, de lo contrario nos dará un error parecido a este: ‘Warning: Cannot modify header information – headers already sent by ….‘.
  2. String (Obligatorio): Cadena con la que se representa el encabezado a mandar por la función header al cliente.
  3. Bool (Opcional): Variable booleana que sirve para reemplazar encabezados del mismo tipo enviados previamente, si se especifica ‘false‘ se respetarán los mismos encabezados enviados anteriormente.
  4. Int (Opcional): Fuerza el código de respuesta.

En los siguientes ejemplos vamos a ver el uso más común del la funcion PHP header.

Ejemplo de redirect 301 con encabezado ‘Location’ de PHP header()

En el siguiente ejemplo vamos a realizar un redirect 301 sin usar la configuración de apache o un .htaccess, el código es el siguiente:

<?php
// Redirect 301 Moved Permanently
header("Location: /mipagina.html",TRUE,301);
?>

En las líneas superiores veréis que hago un redirect 301 de la página actual hacia ‘/mipagina.html‘ con valor true.

Pero también podéis usar .htaccess para hacer un redirect 301… el resultado es el mismo.

Evitar el cacheo de página con los encabezados ‘Expires’, ‘Pragma’ y ‘Cache-Control’

<?php
header("Expires: Tue, 13 Jan 2005 16:00:00 GMT"); // Ponemos la fecha siempre en pasado
header("Pragma: no-cache"); 
header("Cache-Control: no-cache");
?>

Mostrar el error 404 con el encabezado ‘STATUS’ de PHP header()

Si la página consultada no existe, podemos forzar que la visita termine en la típica página de 404, aquí el código a poner en nuestro PHP:

<?php
header("HTTP/1.0 404 Not Found");
header ('Location: /404.html');
?>

Forzar la Descarga de archivos con PHP header()

En este caso vamos a forzar la descarga de un archivo ZIP.

header("Content-Description: File Transfer");
header("Content-Type: application/zip");
header("Content-Disposition: attachment; filename=archivo.zip;");
//Tamaño del archivo en bytes
header("Content-Length: TAMAÑO ARCHIVO en bytes");
header("Content-Transfer-Encoding: binary");
readfile("archivo.zip");
exit;

Indexar o desindexar urls con PHP header()

header("X-Robots-Tag: noindex, nofollow", true);

En esta línea estamos diciendo al robot que no indexe ni siga los enlaces de la página. Le podemos cambiar los parametros de ‘noindex‘ y ‘nofollow‘ por cualquiera de las directrices que se ponen para los robots.

Espero que este post os haya servidor para conocer algo más la función PHP header.

compartir
Publicado por
Aner Barrena
Tags: redirect 301