2010-07-12 6 views
5

상대적으로 참조 할 때만 링크 위치를 표시 할 수있는 방법이 있습니까?링크 절대 위치 표시

e.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의 상태 표시 줄에 나타나는 텍스트를 반향시키고 싶습니다.

답변

0

링크가 상대적인 경우 PHP의 현재 호스트 + 경로로 접두어를 붙일 수 있습니다. /../과 같은 상대 URL 부분을 해결하려면 경로를 포맷해야합니다. 간단한 루프가이를 수행합니다.

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

예시 코드를 포함하는 페이지가 사이트 루트로부터 2 개의 디렉토리에 있다고 가정합니다.

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 

그런 다음 절대 URL을 얻으려면 조금 더 노력해야합니다.

<?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을 다시 쓰지 않습니다. 또한 나는 당신이 https가 아닌 단순한 http만을 사용하고 있다고 가정하고있다. 페이지가 제공되는 프로토콜과 동일한 프로토콜로 링크를 표시하려면 별도의 질문입니다.