¿Cómo configurar una redirección a otra URL en PHP antes de que se cargue la página? Redirección PHP de enlaces externos. Redireccionamiento con retraso y temporizador de cuenta regresiva. Ocultar enlaces de referencia

Cualquiera puede enviar. Pero redirigir correctamente es todo un arte. Pero redirigir a los usuarios por el camino correcto en Internet es aún más difícil. Una redirección a php es la más adecuada para esto.

¿Qué tipo de redirección?

En la programación web surgen situaciones en las que es necesario redirigir a un usuario siguiendo un enlace a otra dirección. Por supuesto, a primera vista, implementar una redirección de este tipo parece un poco "ilegal". En la práctica, este tipo de redireccionamiento tiene demanda no sólo entre los atacantes, sino también entre los webmasters honestos:

En qué casos puede ser necesaria una redirección:

  • Cuando se reemplaza el motor del sitio, como resultado, la arquitectura de todo el recurso cambia. Entonces surge el problema de cómo realizar una redirección;
  • Cuando se vuelve a dibujar la estructura de un recurso, se agregan, eliminan o transfieren secciones enteras o un material. Mientras ocurre este proceso, es posible temporalmente redirigir al usuario a la sección deseada;
  • Si el sitio cambió recientemente su nombre de dominio, después de cambiar el nombre de dominio, el antiguo seguirá apareciendo en los resultados de búsqueda durante algún tiempo. En este caso, el usuario será redirigido al nuevo dominio automáticamente por el motor de búsqueda;
  • Durante el proceso de autorización, por regla general, en un sitio web grande hay dos grupos de usuarios: visitantes comunes y administradores de recursos. En este caso, tiene sentido implementar una redirección para cada usuario según sus derechos y rol. Después de la autorización, el administrador del sitio o los moderadores van a la parte administrativa del recurso y los visitantes van a la parte del usuario del recurso.
Características de la redirección a php

A diferencia de otros lenguajes, PHP tiene algunas ventajas a la hora de implementar redirecciones:

  • PHP es un lenguaje de programación del lado del servidor. Por tanto, la redirección no se producirá en el código html de las páginas mostradas en el navegador, sino en un script alojado en el servidor;
  • La redirección a php se puede implementar de varias maneras. Lo que amplía enormemente su aplicación;
  • Debido al procesamiento de datos en el servidor, la redirección implementada mediante PHP es menos susceptible a los efectos de los filtros de los motores de búsqueda.

Para redirigir en PHP, se utiliza la función header(). Se utiliza para enviar el encabezado http. Su sintaxis es:

encabezado vacío (cadena $cadena [, bool $reemplazar = verdadero [, int $http_response_code ]])

Argumentos aceptados por la función:


  • cadena $cadena – línea de encabezado;

Hay dos tipos de este argumento. El primero es para enviar el código de estado de la conexión. Comienza con "HTTP/". El otro tipo envía un código de estado (REDIRECT 302) al navegador del cliente junto con el encabezado. Este argumento comienza con "Ubicación:"


  • bool $replace es un atributo opcional de tipo bool. Responsable de anular el encabezado anterior. Si se establece en verdadero, se reemplazará el encabezado o encabezados anteriores del mismo tipo. Si el argumento se establece en false, el encabezado no se reescribirá. De forma predeterminada, este valor se establece en verdadero;
  • http_response_code: el argumento fuerza el código de respuesta HTTP. La instalación del código será exitosa siempre que el argumento de la cadena no esté vacío.

El código de estado HTTP es parte de la línea superior de la respuesta del servidor. El código consta de tres números, seguidos de un texto explicativo en inglés. El primer dígito es responsable de la clase de estado. La redirección corresponde a los códigos del 300 al 307. Su descripción completa se puede encontrar en la documentación técnica correspondiente.

Cuando se utiliza la función header() para redirigir enlaces externos, la ubicación de su llamada es de gran importancia. En el código debe ubicarse encima de todas las etiquetas html:


Usando la redirección del encabezado()

Para demostrar la funcionalidad de la función en un servidor local, debe crear dos archivos. Llamemos a uno de ellos redirección.php y al otro redirección2.php. Dentro del primero colocaremos una llamada a función en el siguiente formato:

En otro archivo ponemos la línea:

echo "¡Hola! Estás en el archivo redirigir2.php";


Algunos ejemplos más prácticos del uso de una redirección a php:

  • Forzar código de estado http: cuando se utiliza el primer argumento de la función header() de tipo "ubicación", el código de estado predeterminado "302" (movido temporalmente) se pasa al encabezado. Esto puede convertirse en un problema al mover un recurso a otro nombre de dominio. En los motores de búsqueda, esta redirección temporal puede tardar más. Después de todo, el motor de búsqueda analiza constantemente el código de estado. Y dice "movido temporalmente". Ejemplo de reescritura forzada del código de estado "302" a "301" (movido permanentemente):

La reescritura también es posible en dos etapas. La primera línea reescribe el código de estado y la segunda redirige a una nueva dirección:

  • Utilizar la redirección de enlaces externos para redirigir según el rol del usuario. El rol se determina durante el procedimiento de autenticación. El valor a procesar se escribe en la variable $who:

  • Un ejemplo práctico simplificado de implementación de una redirección de enlace externo: al hacer clic en un enlace se accede a una página PHP. Desde aquí, el usuario es transferido a Rambler en 5 segundos. código HTML:

Presioname

Código del archivo Redirect3.php:


Bueno, aquí estamos, aprendiendo los conceptos básicos de la redirección en PHP. Ahora puede asumir con seguridad la tarea de redirigir a los usuarios en la dirección correcta. Lo principal es no equivocarse en la dirección, de lo contrario conducirá a todos sus usuarios al sitio de otra persona...

Inicio > Programas > Apache

Redirección 301: redirección correcta a través de htaccess y encabezado php

La redirección 301 (301 Permanent Redirect) se utiliza en varios casos: al cambiar un dominio, al mover una página de un sitio, para fusionar el nombre del sitio con y sin www. Esto es importante para transmitir el Page Rank (PR) y retener el tráfico de búsqueda.

Yo mismo me enfrenté a la necesidad cuando, después de mover mi portal de la zona com a ru, descubrí que Google, Yandex y otros motores de búsqueda, naturalmente, no "olvidan" el sitio antiguo (en parte también debido al hecho de que tenía una página propia instalada incorrectamente para manejar errores 404, que devolvió el código de respuesta 200 OK). Además, Google dejó PR=0 para el nuevo sitio durante seis meses, aunque permaneció PR=4 para el antiguo.

El tema de las redirecciones 301 se discute constantemente en varios foros de SEO y cada motor de búsqueda tiene secciones especiales en su sistema de ayuda. Mientras lo averiguaba, encontré las opciones para organizar una redirección que se enumeran a continuación, algunas de las cuales probé yo mismo.

Una redirección 301 es el mejor método para mantener su clasificación en los motores de búsqueda cuando mueve una página o sitio. El código "301" se interpreta como "movido permanentemente".

  • Redireccionamiento simple (en archivo .htaccess o httpd.conf para Apache): Redireccionamiento 301 / http://www.you.com/new.htm
    Dónde:
    Redirección 301 es una instrucción que dice que la página ha sido movida
    / - significa que todo lo que esté en el nivel superior del sitio, incluidos todos los subdirectorios, será redirigido
    http://www.you.com/new.htm - nueva página o sitio (no olvide poner el último “/” si la redirección es al sitio).

    Para redirigir solo una página, preservando el PR de la página anterior:
    Redireccionamiento 301 /old/old.htm http://www.you.com/new.htm
    Dónde:
    /old/old.htm - ruta y nombre de la página antigua

    Sintaxis similar para la redirección del sitio:
    Redireccionamiento permanente / http://www.you.com/

    Ejemplo de redireccionamiento de directorio:
    Redirigir permanente /directorio-antiguo http://www.dominio.com/directorio-nuevo/

    Por ejemplo, redirigiremos a los que ingresaron a la prueba a www.test.com, el resto a enter.test.com (el orden de las entradas es importante):

    Redireccionamiento permanente /prueba http://www.test.com/ Redireccionamiento permanente / http://enter.test.com/

    Nota: Para mis propósitos (cambiar el dominio), la primera opción de una simple redirección 301 fue suficiente.

  • Usando mod_rewrite (escrito en el archivo .htaccess):

    El problema clásico de fusionar nombres de sitios con y sin www se resuelve así:

    Opciones +FollowSymLinks RewriteEngine en RewriteCond %(HTTP_HOST) ^yoursite\.com RewriteRule ^(.*)$ http://www.yoursite.com/$1 .

    o sintaxis alternativa:

    Opciones +FollowSymLinks RewriteEngine On RewriteCond %(HTTP_HOST) ^domain\.com$ RewriteRule ^(.*)$ http://www.domain.com/$1

    La notación significa: redirigir al cliente y enviarle un código de estado de 301 (R=301) y hacer que esta regla dure (L).

    Redirigir un dominio antiguo a uno nuevo:

    Opciones +FollowSymLinks RewriteEngine en RewriteRule (.*) http://www.newdomain.com/$1

    Por ejemplo, si desea que se cargue el archivo rewrite.html en lugar de rewrite.htm, agregue a .htaccess:

    RewriteEngine en RewriteBase / RewriteRule ^rewrite\.htm$ rewrite.html

    Para reemplazar todos los archivos .htm con archivos .html:

    RewriteEngine en RewriteBase / RewriteRule ^(.*)\.htm$ $1.html
  • Redirigir a PHP: es mejor especificar HTTP/1.1, ya que los más antiguos no admiten alojamiento compartido. Recuerde que antes de llamar al encabezado, no se debe imprimir nada (por ejemplo, eco o impresión). Por lo tanto, es mejor poner este código al principio del script PHP. Una versión más completa de una redirección php con guardar la página transmitida y los parámetros de llamada:
  • Redirigir a ASP
  • Redirigir a ASP.NET privado vacío Page_Load (remitente del objeto, System.EventArgs e) ( Response.Status = "301 movido permanentemente"; Response.AddHeader ("Ubicación", "http://www.new-url.com") ; )
  • Redirigir a ColdFusion
  • Redirigir mediante meta actualización

    donde 0 es el retraso de la redirección en segundos, nuevodominio.com es la página a la que redireccionaremos. Algunos navegadores más antiguos no admiten la meta actualización con un valor de 0 por compatibilidad; puede establecerlo en un valor distinto de cero, aunque, en mi opinión, esto ya no es relevante; Una redirección de este tipo no podrá unir sus sitios (con o sin www) ni transferir relaciones públicas, ya que los motores de búsqueda la ignoran. Devuelve un código 200 OK, que es una página normal. Esta técnica es popular entre los spammers, por lo que sólo debe usarse para páginas que no serán indexadas.

  • Redirigir usando JavaScript

    Las opciones de redireccionamiento de JavaScript a menudo se implementan utilizando la función setTimeout("function", delay).

    Por ejemplo, para hacer clic automáticamente en el botón "Enviar" del formulario "formulario de búsqueda" 0,1 segundos después de cargar el código:

    setTimeout("document.forms["buscarformulario"].Submit.click()", 100);

    Puede asignar cualquier acción al botón "Enviar", por ejemplo, abrir una nueva URL en esta ventana. Por cierto, estos redireccionamientos son más comunes cuando se organiza Dorways: el navegador del usuario será redirigido a otra página y un robot de búsqueda que "no entiende" JavaScript indexará esta página, a la que el usuario no puede acceder. Los desarrolladores de Doorway publican texto en él, repleto de palabras clave "necesarias".

    Para simplemente redirigir a otra página, puede insertar después de una de las opciones de código JavaScript:

    • ubicación="http://www.nuevodominio.com";
    • document.ubicación.href="http://www.nuevodominio.com";
    • ventana.ubicación.recargar("http://www.nuevodominio.com");
    • documento.ubicación.reemplazar("http://www.nuevodominio.com");
    En este último caso, ya no será posible volver a la página que realizó la redirección, ya que su dirección se borra del historial, lo que muchas veces es necesario. Si necesita un retraso de tiempo, puede registrar la ubicación="http://www.newdomain.com"; como función e insértela en setTimeout("function()", delay_in_ms); Una redirección a JavaScrupt no es una redirección 301 y no transferirá el PR de la página y no podrá garantizar su fusión.
  • Observemos además algunas características de las redirecciones:
    • Los métodos de redireccionamiento con .htaccess solo funcionan en servidores Linux que tienen Apache con el módulo Mod-Rewrite habilitado.
    • El uso de .htaccess crea una carga adicional en el servidor Apache; es más eficiente escribir los mismos comandos en su archivo de configuración hpptd.conf, pero, por regla general, el webmaster no tiene acceso a él.
    • La redirección 301 le permite ahorrar tráfico y transferir páginas de relaciones públicas a los motores de búsqueda (para Google, seguro).
    • El proceso de pegar y transferir relaciones públicas lleva mucho tiempo, hasta varios meses, y también depende del motor de búsqueda, por lo que no elimine la página o el sitio anterior hasta que se produzca la transferencia final.
    • Algunos motores de búsqueda requieren configuraciones adicionales para fusionar sitios, por ejemplo, para Yandex, debe especificar adicionalmente robots.txt

    Conclusión. Una forma segura de redirigir páginas antiguas a nuevas o un sitio antiguo a una nueva dirección, manteniendo posiciones en los motores de búsqueda, es utilizar una redirección 301, que también le permitirá transferir el Page Rank antiguo de la página al nuevo. sitio.

    ¿Con qué frecuencia es necesario redirigir al usuario a otra página? Estoy seguro de que no es raro. Se utilizan varios métodos para realizar esta tarea.

    Redireccionando a javascript

    En la página desde la que desea redirigir al usuario, establezca el siguiente código:

    ventana.ubicación.href = "http://www.sitio"

    En lugar de http://www.site, especifique la página a la que se debe redirigir al usuario. El método no funciona si javascript no está habilitado en el navegador. Pero, como muestra la práctica, casi todos los usuarios del sitio tienen JavaScript habilitado. Pero al mismo tiempo está deshabilitado para los robots de búsqueda.

    Redirigir usando la metaetiqueta de actualización

    Usemos etiquetas html. La etiqueta que indica el tiempo de actualización de la página se ve así:

    La etiqueta en este formulario obligará a que la página se actualice en el navegador después de 5 segundos, reemplazando la dirección de la página con la nueva especificada en la etiqueta.
    Pero no nos conformamos con 5 segundos, por lo que la versión final de la etiqueta será la siguiente:

    < meta http-equiv = "refresh" content = "0;url=http://www.сайт" />

    La desventaja de redireccionar con etiquetas y javascript es que si se mueve el sitio, se cambia el dominio o se mueven los archivos, el artículo sigue siendo el mismo para el usuario, pero no para los motores de búsqueda. Por lo tanto, al mover un sitio, no puede utilizar estos métodos en absoluto, ya que el sitio principal saldrá de los resultados de búsqueda debido a que está vacío y el nuevo sitio no aparecerá en los resultados debido a "plagio". Sí, sí, los motores de búsqueda evaluarán el sitio como plagio. Y este sitio robó contenido de su sitio anterior. Los plagiadores son significativamente menores en los resultados de búsqueda. No cometas errores.

    Redirección de herramientas PHP

    Aquí todo es sencillo. Debe enviar el encabezado http apropiado

    La triste experiencia nos dice que no se debe descuidar el estado del servidor.
    Uno de mis artículos se encontraba a menudo en los resultados de los motores de búsqueda. Pero decidí trasladarlo a otra dirección. Como resultado, la dirección A se cambió a la dirección B. Sin embargo, no envié ningún encabezado a los visitantes a la dirección A. Después de un tiempo, los robots de búsqueda encontraron la página B. La indexaron, vieron que coincidía con la página A y la ignoraron. Luego fuimos a la página A, vimos que había desaparecido y la eliminamos de nuestra propia base de datos.
    Como resultado, mi artículo desapareció de los resultados del motor de búsqueda.

    Por lo tanto, no olvide especificar los encabezados http necesarios al transferir materiales.

    Redirección mediante el servidor apache (.htaccess)

    Quizás la forma más cómoda de reenviar. Un ejemplo de redirección a un nuevo dominio:

    Por lo tanto, redirigimos la solicitud desde el archivo old.htm, ubicado en el directorio raíz del sitio, al archivo rewrite.html, ubicado en el directorio newcategory.

    Como ya habrás notado (y aquellos que no tuvieron tiempo todavía tienen una última oportunidad), RewriteRule admite expresiones regulares, lo que te permite hacer lo que quieras con la redirección.
    Por ejemplo, hice un archivo .htm con una imagen (RewriteRule ^(.*).htm$ $1.jpg), es decir desde la dirección dog.htm el navegador me redirigió a la imagen dog.jpg. No quiero describir todas las capacidades del módulo mod_rewrite, con cuya ayuda estábamos trabajando ahora. Hay muchos tutoriales escritos sobre esto, pero si lo desea, puede buscar más información al respecto usted mismo. (Por ejemplo, en, sin embargo, en inglés).

    La ventaja de este método es que es indoloro. Es decir, la transferencia de materiales y la posterior redirección de la dirección anterior a la nueva no afectará de ninguna manera la posición del sitio en los motores de búsqueda. El sistema funciona igual que las redirecciones de php, excepto que no requiere la instalación de php. Pero también hay un inconveniente: la redirección mediante mod-rewrite carga el servidor un poco más que la misma redirección a través de php. Y el módulo mod-rewrite no siempre está instalado en Apache. Aunque la mayoría de los hosters ya lo instalan, todavía hay casos clínicos aislados en los que este módulo no está instalado.

    ¡Elija el método que más le convenga e instálelo en su sitio!

    (PHP 4, PHP 5, PHP 7)

    encabezado: envía un encabezado HTTP sin formato

    Descripción

    encabezado (cadena $encabezado [, bool $reemplazar = VERDADERO [, int $http_response_code ]]): vacío

    header() se utiliza para enviar un encabezado HTTP sin formato. Consulte la especificación » HTTP/1.1 para obtener más información sobre los encabezados HTTP.

    Recuerde que se debe llamar a header() antes de enviar cualquier salida real, ya sea mediante etiquetas HTML normales, líneas en blanco en un archivo o desde PHP. Es un error muy común leer código con funciones include o require u otra función de acceso a archivos, y tener espacios o líneas vacías que se generan antes de llamar a header().


    El mismo problema existe cuando se utiliza un único archivo PHP/HTML.

    Parámetros

    La cadena de encabezado. Hay dos llamadas de encabezado de casos especiales. El primero es un encabezado que comienza con la cadena " HTTP/ " (las mayúsculas y minúsculas no son significativas), que se usará para determinar el código de estado HTTP a enviar. Por ejemplo, si ha configurado Apache para usar un script PHP para manejar solicitudes de archivos faltantes (usando el documento de error

    directiva), es posible que desee asegurarse de que su secuencia de comandos genere el código de estado adecuado. El segundo caso especial es el encabezado "Ubicación:". No sólo envía este encabezado de vuelta al navegador, sino que también devuelve un REDIRIGIR 201 (302) código de estado al navegador a menos que el o un 3xx

    El código de estado ya ha sido configurado.

    Reemplazar

    El parámetro de reemplazo opcional indica si el encabezado debe reemplazar un encabezado similar anterior o agregar un segundo encabezado del mismo tipo. De forma predeterminada, lo reemplazará, pero si pasa FALSO como segundo argumento, puede forzar múltiples encabezados del mismo tipo. Por ejemplo:

    Http_response_code

    Fuerza el código de respuesta HTTP al valor especificado. Tenga en cuenta que este parámetro solo tiene efecto si el encabezado no está vacío.

    Valores de retorno

    No se devuelve ningún valor. Registro de cambios
    5.1.2 Descripción de la versión
    Esta función ahora evita que se envíe más de un encabezado a la vez como protección contra ataques de inyección de encabezado.

    Ejemplos

    Ejemplo #1 Diálogo de descarga



    
    Arriba