2013-04-29 3 views
4

나는 CSS, 이미지 및 자바 스크립트 파일과 같은 참조 자산에 절대 경로를 사용하고 있습니다. 나는 이런 식으로 뭔가를 index.html<head> 그렇게 : 웹 서버 서브 디렉토리의 절대 자산 경로를 다시 쓰는 방법

<link href="/assets/css/style.css" rel="stylesheet"> 

내 프로젝트 디렉토리이 같다고 가정하면이 내가 여기에 문서 루트를 설정 내 로컬 웹 서버에서 잘 작동

 
- index.html 
- assets/ 
-- css/ 
--- style.css 

디렉터리에 <virtualhost> 지시어를 사용합니다. 그러나 이것을 웹 서버의 하위 디렉토리 (예 : http://www.example.com/subdirectory/)에 넣으면 http://www.example.com/subdirectory/index.html에 액세스 할 때 더 이상 자산을 찾지 못합니다.

index.html에서 상대 경로를 사용하지 않고 어떻게 해결할 수 있습니까? 하위 디렉토리의 .htaccess 파일을 사용하여이를 수행 할 수 있습니까? 그렇다면 어떻게?

편집

당신은 당신의 머리에 넣고 수 /subdirectory/

+0

/assets/css/style.css는 상대 경로이므로 의미가 확실하지 않습니다. – dave

+0

@dave 사실이 아니기 때문에 슬래시로 시작하기 때문에 절대적입니다. – Nelson

+0

해결책은 상대 경로가 마음에 들지 않더라도 그것을 사용하는 것입니다. – Nelson

답변

3

이 모두 인 경우 subdirectory 미만인 경우 간단한 다시 쓰기를 사용할 수 있습니다.

RewriteEngine on 
# don't rewrite, if it is already rewritten 
RewriteCond %{REQUEST_URI} !^/subdirectory 
# only rewrite requests for files below /assets 
RewriteCond %{REQUEST_URI} ^/assets/ 
RewriteRule ^.*$ /subdirectory/$0 [L] 
+0

이 작동하지 않습니다. 아직 요청하는 브라우저 http://www.example.com/assets/css/style.css – mediafreakch

+0

@mediafreakch 내 테스트 환경에서 작동합니다. 루트 디렉토리에 .htaccess가 있습니까? –

+0

아, 아니, 나는/subdirectory에 배치했다. 루트 디렉토리에 놓으면 기본적으로 작동합니다. 하지만 이제는 "모든 것이 하위 디렉토리 아래에있다"는 의미를 이해합니다. 셋업시에는 그렇지 않습니다. 영향을받지 않아야하는 다른 많은 디렉토리가 있습니다. 다른 사람들에게 영향을 미치지 않도록 솔루션을 수정해야하는 방법은 무엇입니까? – mediafreakch

0

발생 어떤 리디렉션에 의해 영향을 받아서는 안 웹 서버의 루트 레벨에있는 다른 폴더가 있습니다

<base href="http://www.example.com/subdirectory/"> 
+1

URL이 상대적인 'assets/css'이면 작동하지 않을 수 있습니다./style.css'하지만 그들은 절대적입니다'/ assets/css/style.css' – Nelson

+0

이것은 아직도 상대적입니다. 봐봐. – dave

+0

다운 투표. 절대 경로에서는 작동하지 않습니다. – GijsjanB