2016-07-29 3 views
0

내 로컬 호스트에 HTML/CSS/JS 프로젝트를 작성 중입니다. 프로젝트 루트는 http://localhost/projects/project1/입니다. 이 같은 자바 스크립트/CSS 파일 를 참조하면 HTML 파일의 경로에 의존하지 않도록하지 않는 한 (HTML 파일은 '기본 URL로 내 프로젝트 루트를 처리 할 수있는 경우HTML 프로젝트 경로 혼란

내가 알고 싶은 나는 현재 디렉토리 에 상대적인 참조). 여기

내 프로젝트 구조입니다 :

  • 프로젝트

    • 프로젝트 1

      • index.html을
      • 페이지 (디렉토리)
      • page1.html
      • page2.html

      • 애플 리케이션 (디렉토리)

      • APP1 (디렉토리)

        • index.html을
        • 있는 style.css
      • 을 app.js
      • deps (디렉토리)

      • jquery.js

/projects/project1/index.html 내부 jquery.js를 참조, 볼 수 있듯이,
내가 쓸 필요가 :

<script src="deps/jquery.js"></script> 

내에서 jquery.js를 참조하려면 /projects/project1/pages/index1.html,
나는
나는 내가 ../의 정확한 수를 쓴없는 확신하는 시점에서

<script src="../../jquery.js"></script> 

를 작성해야 쉽게 일으킬 수

<script src="../deps/jquery.js"></script> 

http://localhost/projects/project1/apps/app1/index.html 내부 jquery.js를 참조하기 위해 의식 오류.

내 디렉토리를 재정렬하거나 이름을 바꾸면 경로가 다시 작성되어 매우 힘들 수 있습니다.

나는 그 중 어떤 것도 매력적이지 않은 여러 가지 방법을 생각해 냈습니다 (옵션 3이 가까워 졌음에도 불구하고).


생각/시도 :

  1. 나는 htaccess로한다 RewriteEngine/RewriteBase하지만 아무것도 일하지와 함께 연주했습니다.
  2. NodeJS가 그렇게하기 쉽도록 각 프로젝트마다 새 서버를 만들 수 있습니다. 이렇게하면 각 서버는 '정적 경로'로 '/'입니다. 이 접근법의 문제점은 다른 포트에서 동시에 많은 서버를 동시에 관리하는 혼란을 줄 수 있다는 것입니다.
  3. 는 I 그러나이 난 폴더 이동하거나 바꾸고 PROJECT_PATH 변경의 .htaccess마다 열기를 의미하고

    SetEnv PROJECT_PATH /projects/project1/ 
    

    통해 htaccess로의 절대 경로 변수를 설정할 수있다. 이것은 단순 해 보일지도 모르지만 프로젝트를 다른 사람에게주고 그들이 .htaccess가 어떻게 작동하는지 모르는 경우 이 경로를 찾는 방법을 설명하는 것이 매우 어려우며이를 변경하는 방법은 이고 더 문제가있는 경우 .htaccess는 한 줄보다 길다.

    이상적으로는이 SetEnv가 내부에있는 폴더 인 을 알아 내기를 원하지만이 작업을 수행하는 방법을 모르겠습니다. 이것은 또한 경로 지정이 .htaccess 나 NodeJS와 같은 PHP가없는 다른 서버로 이동하는 것을 괴롭히는 PHP 전처리에 의존하는 문제가 있습니다 (여전히 PHP를 호출 할 수 있지만 여전히 .htaccess를 처리해야 함).). 이

    1. 하는 htaccess로 파일이 특정 htaccess로 파일의 추론 경로 을 포함하는 환경 변수를 만들 확인하는 중 가능한 경우


    내가 알고 싶은 내 그 PHP 파일 이렇게 이 디렉토리는 의 경로를 사용하여 $_ENV{PROJECT_ROOT}을 기준으로 경로를 지정할 수 있습니다. 이 방법은 프로젝트가 이동되거나 공유되는 경우 .htaccess를 수정할 필요없이 계속 작동합니다.

  4. .htaccess를 사용하여 모든 "/"참조에서이 디렉토리를 루트로 취급하는 동일하거나 낮은 디렉토리에있는 HTML 파일을 강제로 작성하십시오.

또는이 문제를 해결할 수있는 다른 사항이 있을지 생각해보십시오.

미리 감사드립니다.

+0

왜 상대 URL을 사용할 수 없습니까? –

+0

때문에 동일한 종속성을 참조하는 각 파일에서 동일한 방식으로 참조되기를 원합니다. 그렇지 않으면 프로젝트를 변경하기가 어려워지고 확장하기가 어렵습니다. 그것은 또한 html 파일을 더 어렵게 만듭니다. – Dmitry

답변

0

드미트리, 당신이 시도 할 수 있습니다 : 파일에서

1) 을 httpd.conf, 마지막에 다음 줄을 추가합니다 :

Redirect permanent /deps http://localhost/projects/project1/deps/ 

2)를 다시 시작 아파치 서비스

3) 색인 페이지 (/ projects/project1/pages/index1)를 새로 고칩니다.이 같은 HTML)

내가 사용 무언가 :

<html> 
<head> 
<script src="/deps/jquery.min.js"></script> 
</head> 

</html> 

<?php 

echo "welcome to index" 

?> 
+0

모든 프로젝트의이 원인/deps가이 위치로 리디렉션되지 않습니까? 서로 다른 의존성을 가진 다른 프로젝트가 있습니까? jquery.js는 2.2가 아닌 jquery 3이거나 각 프로젝트/앱마다 app.js가 들어있는/scripts 디렉토리가 있어야합니다. 하드 리다이렉션이 잘 작동한다는 것을 안다.하지만 나는/deps 폴더를 만들고 똑같은 일을 할 수있다. 특정 폴더에만 상대적으로 사용하기를 원합니다. – Dmitry

+0

프로젝트가 동일한 라이브러리를 사용하는 경우이 방법이 유용 할 수 있지만 다른 폴더를 사용해야 할 경우 수동으로 경로를 다시 작성하는 것을 고려하십시오. –

+0

모든 프로젝트에서 "일반적인"작업을 이미 수행했지만 어려워집니다 "only-this-project"폴더의 경우, 프로젝트의 다양한 레벨에서 참조하려고 시도합니다. 현재이 제약으로 인해 평평하지 않은 프로젝트를 작성하는 것은 매우 어렵습니다. 작은 변화가 모든 html 파일을 수동으로 수정해야한다는 것을 의미합니다. – Dmitry

0

가 어떻게 내 문서 루트 외부의 디렉토리에 액세스 할 수 있습니까?

이렇게하면 Windows에서 디렉토리 루트 외부에있는 디렉토리에 대한 액세스 권한을 사용자에게 부여하는 방법을 설명합니다.

디렉토리가 C :/www/newfolder /에 있다고 가정하면 httpd.conf 파일에서 다음을 생성합니다. 사용자가 www.domain.com/newfolder/에 갈 때 이제

Alias /newfolder/ "C:/www/newfolder/" 

<Directory "C:/www/newfolder"> 
    Options Indexes MultiViews 
    AllowOverride AuthConfig 
    Order allow,deny 
    Allow from all 
</Directory> 

, 그들은 문서 루트 외부에있는 폴더를보고이 디렉토리는 문서 루트 아래에 포함되는 브라우저에 나타납니다 ..

가상 호스트가 있으면 별칭이 모든 가상 호스트에서 작동하므로 익숙하지 않은 이름을 별칭으로 사용해보십시오.

희망 하시겠습니까?