2010-07-12 11 views
5

¿Hay alguna forma en que pueda mostrar una ubicación de enlaces absolutamente cuando solo hago referencia a ella de forma relativa?Visualización de una ubicación absoluta de enlaces

I.e. Un archivo es relativamente referenciado como ...

<a href='../../files/uploaded_file.jpg'>Your Uploaded File</a> 

Pero también quisiera mostrar algún texto diciendo ...

You can link to your file via www.example.com/files/uploaded_file.jpg 

La captura es que no quiero declarar explícitamente lo que el dominio es, ya que el script se usará en una variedad de dominios diferentes sin la necesidad de editar el script.

Básicamente quiero hacer eco de algún modo del texto que ves en la barra de estado de firefox cuando cierras el mouse sobre un enlace.

Respuesta

1

Hacer una:

var_dump ($ _ SERVER);

y verá con cuál puede contar como la URL del dominio.

0

Si un enlace es relativo, puede prefijarlo con el host + ruta actual en PHP. Tendría que formatear la ruta para resolver las partes relativas de url como /../, un bucle simple haría esto.

1
<a href="<?php echo 'http://'.$_SERVER['HTTP_HOST'] . '/files/uploaded_file.jpg'; ?>">Your file</a> 
1

Suponiendo que la página que contiene el código de ejemplo es de dos directorios desde la raíz del sitio, p.

http://www.example.com/one/two/example-page.php 

entonces se podría hacer esto:

<a href='http://<?php echo htmlentities($_SERVER['SERVER_NAME'], ENT_QUOTES)?>/files/uploaded_file.jpg'>Your Uploaded File</a> 

Si esta suposición es incorrecta y los archivos se almacenan en un directorio que es al menos un directorio más profundo que la raíz, por ejemplo,

http: //www.example.com/content/files/uploaded_file.jpg 

tienes que trabajar un poco más para obtener la URL absoluta.

<?php 
$FilesystemPath = str_replace("\\", "/", realpath(dirname(__FILE__) . "/../../files/")) . "/uploaded_file.jpg"; 
$DocRoot = $_SERVER['DOCUMENT_ROOT']; 
$Uri = str_replace($DocRoot, '', $FilesystemPath); 
?> 
<a href='http://<?php echo htmlentities($_SERVER['SERVER_NAME'] . $Uri, ENT_QUOTES)?>'>Your Uploaded File</a> 

Este ejemplo asume que usted sabe que el directorio de archivos está en el directorio que está dos directorios desde el directorio de la página.

Todos estos ejemplos asumen un mapeo uno a uno de directorios en el sistema de archivos y no hay reescritura de URL en curso. También asumo que estás usando simplemente http y no https. Si desea presentar enlaces en el mismo protocolo en el que se sirve la página, esa es una pregunta aparte.

Cuestiones relacionadas