2012-03-06 2 views
0

우리는 파일 구조과 같이있는 경우 : (. 즉 <a href="aboutus/aboutus.html">) 하나가 모두 index.htmlaboutus.html에, aboutus.html에 링크 할 때 logo.jpg을 배치하면 폴더를 지정해야하지만아파치는 상대 경로를 찾는시기와 방법을 어떻게 알 수 있습니까?

/ 
├── aboutus 
│   ├── aboutus.html 
│   └── logo.jpg 
├── validate.php 
├── index.html 
└── logo.jpg 

, 아파치 알 수있는 로드 할 하나. 아마도 현재 디렉토리에서만 파일을 찾습니다. 내 가상 호스트 섹션에서 다음 지시문이 있습니다

RewriteCond %{REQUEST_URI} !^/validate.php 
RewriteRule ^/(.*) /validate.php?uri=$1 

나는이 rewerite 규칙에 총 안돼서를, 그래서 이것은 내가 할 위의 원하는 것입니다 : 나는 그것이에서 모든 요청을 차단하려면 브라우저. 여기에는 주소 표시 줄에 입력 된 요청은 물론 웹 페이지 (예 : js 파일, 이미지 ...)의 요청도 포함됩니다. 다음으로 요청한 파일을 validate.php

validate.php으로 보내고 싶지만 사용자가 요청한 파일을 반환합니다. aboutus.html<img src = "logo.jpg"/>과 같은 그림이 삽입 된 경우 validate.php/aboutus/logo.jpg이고 /logo.jpg이 아닌 것을 어떻게 확인할 수 있습니까?

답변

1

본질적 절대 경로 기본 리소스 URL상대적인 자원 URL (이 here에 이상)에서 결정된다. validate.php에서 이미지, 스타일 시트 등의 상대 URL을 올바르게 확인할 수 있도록하려면 이러한 리소스가 포함 된 문서의 절대 URL을 알 수 있어야합니다.이 경우 문서에 <base> 태그가있는 경우 더 까다 롭습니다.

0

어쨌든 htaccess 파일에서 항상 절대 경로로 작업합니다. 루트 슬래시로 시작한다는 뜻입니다.

시도 사용하기 :

RewriteCond %{REQUEST_URI} !^/validate.php 
RewriteRule ^(.*) /validate.php?uri=$1 
1

PUK, 당신은 별도의 두 가지 측면을 계속해야 :

  • 모든 HTTP 요청, 같은 GET 절대, 그리고 브라우저를 참조 문서의 경로 (또는 <base> 태그에 정의 된 경로)를 기반으로 상대 href 또는 src 속성을 변환하므로 http://somehost/fred/xx.html을로드 한 다음 r 이미지를 참조하십시오 http://somehost/fred/style1/images/pic.png

  • mod_rewrite 프로세스 경로가 어떻게 다른지를 나타냅니다. 그것은 서버의 비즈니스입니다. 당 서버 구성 (또는 apache.conf에 vhost.conf) 내부의 평가 방법에 대하여 절대 경로 설명 RewriteRule Documentation 참조 별 디렉토리 내부 구성 (예컨대 .htaccess 또는 블록)

관련 문제