2009-08-16 44 views
111

En PHP, ¿cómo puedo obtener la URL de la página actual? Preferentemente solo las partes después de http://domain.com.Cómo obtener la URL de la página actual en PHP

+0

Por favor, vea esta respuesta: http://stackoverflow.com/questions/6768793/php-get-the-full-url/8891890 # 8891890 –

+7

Me parece gracioso que esta pregunta se marque como un duplicado de otra a pesar de que me preguntaron dos años antes – cameronjonesweb

+2

@cameronjonesweb Y que la otra pregunta tiene un alcance totalmente diferente (obtener la URL completa), a diferencia de ésta (obtener la página actual solamente) – person27

Respuesta

216
$_SERVER['REQUEST_URI'] 

Para más detalles sobre qué información está disponible en la matriz $ _SERVER, ver the PHP manual page for it.

Si también necesita la cadena de consulta (el bit después de la ? en una URL), esa parte es en esta variable:

$_SERVER['QUERY_STRING'] 
+5

También puede usar $ _SERVER ['PHP_SELF'] –

+11

iirc, PHP_SELF y REQUEST_URI tendrán valores diferentes si la página fue redirigida a través de mod_rewrite - el primero tiene la ruta de acceso al guión real, este último tiene el camino solicitado originalmente. – Amber

+1

Err, al menos en mi apache, 2.2.4, con php 5.3, REQUEST_URI contiene las cosas después de? ya ... – Kzqai

22
$uri = $_SERVER['REQUEST_URI']; 

Esto le dará el directorio y el nombre del archivo solicitado. Si usa mod_rewrite, esto es extremadamente útil porque le dice a qué página estaba mirando el usuario.

Si necesita el nombre real del archivo, puede intentar $_SERVER['PHP_SELF'], la constante mágica __FILE__ o $_SERVER['SCRIPT_FILENAME']. Los últimos 2 le dan la ruta completa (desde la raíz del servidor), en lugar de solo la raíz de su sitio web. Son útiles para incluir y tal.

$_SERVER['PHP_SELF'] le da el nombre del archivo relativo a la raíz del sitio web.

$relative_path = $_SERVER['PHP_SELF']; 
$complete_path = __FILE__; 
$complete_path = $_SERVER['SCRIPT_FILENAME']; 
9

Las demás respuestas son correctas. Sin embargo, una nota rápida: si está buscando tomar las cosas después del ? en un URI, debe usar la matriz $_GET[].

0

puede utilizar $ _SERVER [ 'HTTP_REFERER'] esto le dará toda la URL, por ejemplo: supongamos que desea obtener la URL del nombre del sitio www.example.com continuación, $ _SERVER [ 'HTTP_REFERER'] le dará https://www.example.com

+0

¿Por qué mi variable $ _SERVER no contiene este elemento? – Daria

+1

'$ _SERVER ['HTTP_REFERER']' hace exactamente lo que dice en la lata, y eso es obtener la URL de la página que envió al usuario a la página ... I.E El referer. – Dendromaniac

+6

Las personas que votaron en contra de esta respuesta tendrán problemas para depurar su código.'HTTP_REFERER' no es la página actual, es el usuario de la página que estaba antes de la página actual. – AliBZ

61

si desea que sólo las partes de la URL después de http://domain.com, intente esto:

<?php echo $_SERVER['REQUEST_URI']; ?> 

si el URL actual era http://domain.com/some-slug/some-id, eco devolverá solamente '/ alguna babosa/algunos-id'.

si desea que la URL completa, intente esto:

<?php echo 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; ?> 
+0

helpt para mí. gracias – Daria

+13

¿No debería verificar si 'HTTPS: //' está habilitado? He encontrado esta función para comprobar: (! Empty ($ _ SERVER [ 'HTTPS']) && $ _SERVER [ 'HTTPS'] == 'off') 'función isSSL() { \t \t retorno \t \t \t \t \t \t || $ _SERVER ['SERVER_PORT'] == 443; \t \t} ' – Dendromaniac

Cuestiones relacionadas