2011-11-28 1 views
0

회사 사이트의 404 페이지에서 작업 중이며 $depth 변수에 "../site/"이라는 변수가 있습니다. 이 기본 디렉토리의 모든 나쁜 URL을 잘 작동하지만 하위 폴더에 아무것도 $depth 변수를 사용하여 잘못된 장소에서 CSS 파일을 잡는 것입니다. 나는 $depth = '/site/'을 시도하고 그것은 전혀 CSS 파일을 움켜 잡았다. 내 질문은, 어떻게하면 동적으로 의 수를 $depth 알아낼 PHP를 가질 수 있습니까? 숫자 나 어떤 것을 얻을 수 있다면 쉽게 할 수 있지만, 이것을하기위한 빠르고 쉬운 방법을 찾지 못하는 것 같습니다.PHP : 현재 URL의 디렉토리 깊이를 어떻게 얻습니까?

편집 : 잘못된 URL이 참조하는 디렉토리와 상관없이 404.php 파일은 한 위치에만 있습니다. 그래서, 내 진짜 문제는 아마 PHP와 전혀 관련이 없습니다. 404 페이지에서 www.siteurl.com/404에 도달하면 하나의 폴더에서 CSS 파일이 생성되지만 www.siteurl.com/foo/bar에서 도달하면 다른 폴더에서 같은 이름의 CSS 파일이 표시되는 이유는 무엇입니까?

+0

왜 그냥 CSS 파일에 절대적으로 연결하고이 모든 목적을 위해'$의 depth'에 대해 잊지 마세요? – Kris

답변

1

몇 년 전에 내가 쓴 기능은 다음과 같습니다. 내 웹 사이트에서 사용합니다. 그것은 도움이 될 것입니다

<? 
function absolute_include($file) 
     { 
     /* 
     $file is the file url relative to the root of your site. 
     Yourdomain.com/folder/file.inc would be passed as 
     "folder/file.inc" 
     */ 

     $folder_depth = substr_count($_SERVER["PHP_SELF"] , "/"); 

     if($folder_depth == false) 
      $folder_depth = 1; 

     include(str_repeat("../", $folder_depth - 1) . $file); 
     } 
?> 
0

알려진 웹 경로를 알려진 디스크 경로 (예 : web/diskroot)에 매핑해야합니다. 이 정보를 바탕으로 현재 웹 경로가 가리키는 위치에서 파생 될 수 있습니다.

2

CSS 파일의 절대 URL을 사용하면 이와 같은 경로를 엉망으로 만들 필요가 없습니다.

$_SERVER 어레이를보고 어떤 이유로 든 문제가 해결되지 않으면 $_SERVER['PHP_SELF']$_SERVER['DOCUMENT_ROOT']입니다. 처음에/A를 사용하여 당신은 단지 CSS에 끌어하려는 경우

+0

좋은 힌트를 여기에! – maraspin

1

, 당신의 HTML 헤드에, 당신은 그냥 사용할 수 있습니다/< path_to_css> .CSS

, 당신은 갈 브라우저를 말하는거야 사이트의 루트 디렉토리로 이동하여 요청 된 사이트를 찾습니다. 당신이 PHP를 통해 경로를해야하는 경우

, 당신은 당신이에서 구축 할 수 있습니다 귀하의 사이트의 루트 디렉토리에 직접 경로를 제공합니다

$_SERVER['DOCUMENT_ROOT'] 

를 사용할 수 있습니다.