¿Cómo obtener la URL completa en PHP?

publicado por: Anonymous

Utilizo este código para obtener la URL completa:

$enlace_actual = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];

El problema es que en .htaccess uso máscaras y redireccionamientos, por lo que la URL que se ve no coincide siempre con la ruta al fichero.

Lo que necesito es obtener la URL, lo que está escrito en la URL, nada más y nada menos. Es decir, quiero el valor de la barra de direcciones del navegador y no la ruta del fichero en el servidor. ¿Cómo puedo hacerlo?

solución

para eso tienes que usar $_SERVER[‘REQUEST_URI’]

$enlace_actual = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];

La relación entre REQUEST_URI y PHP_SELF es más o menos como sigue:

  • El webserver recibe del browser una solicitud en la forma de una url. Ésta se compone del host más el REQUEST_URI.
  • El webserver intenta discernir si le están pidiendo un estático, un directorio, una regla de rewrite, o un script php
  • Si es una regla de rewrite, el REQUEST_URI se asocia a un entrypoint en PHP que lo usará como parámetro.
  • Si es un script PHP, se invoca y ejecuta ese script PHP.

Tanto si hay una regla de redirección de por medio como si no, el ciclo de vida del request termina ejecutando un script PHP, que es el PHP_SELF.

El PHP_SELF en muchos casos usa el REQUEST_URI para deducir los parámetros que se le han pedido asi que, aunque para el webserver el request ya no es su problema, dentro del script PHP sí se siguen procesando los parámetros de la URL original para generar la respuesta. Esto es válido para casi cualquier ejemplo de nice-urls, desde WordPress hasta Laravel.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *