2010-07-12 71 views
5

當我僅僅相對引用它時,是否有任何方法可以絕對顯示鏈接位置?顯示鏈接的絕對位置

I.e.一個文件相對引用像...

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

但我也想顯示一些文本說...

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

美中不足的是我不想明確地規定的域名是什麼,因爲該腳本將用於各種不同的域而不需要編輯腳本。

基本上我想以某種方式回顯你在Firefox的狀態欄中看到的文字,當你將鼠標懸停在鏈接上時。

回答

1

做一個:

的var_dump($ _ SERVER);

你會看到哪一個你可以指望作爲域名的網址。

0

如果一個鏈接是相對的,你可以用PHP中的當前主機+路徑作爲前綴。你將不得不格式化路徑來解決像/../這樣的相對url部分,一個簡單的循環就可以做到這一點。

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

假設包含示例代碼的頁面是來自站點根目錄的兩個目錄,例如,

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

,那麼你可以這樣做:

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

如果假設是錯誤的並且文件被存儲在目錄中至少有一個目錄以外的根更深例如

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

然後你必須多一點工作才能獲得絕對網址。

<?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> 

本示例假定您知道文件目錄位於從頁面目錄向上兩個目錄的目錄中。

所有這些示例都假設文件系統上的目錄一對一映射,並且沒有進行URL重寫。另外我假設你只使用普通的http而不是https。如果你想在同一個協議中顯示鏈接,那麼這是一個單獨的問題。