XAMPP / Apache가 htdocs 외부에 파일을 제공하게하려면 [닫기]


304

디렉토리 외부에서 파일을 제공 하도록 xampp 를 구성 할 수 htdocs있습니까?

예를 들어 다음과 같은 파일이 있다고 가정 해보십시오.

C:\projects\transitCalculator\trunk\TransitCalculator.php

xampp 파일은 일반적으로 다음 위치에서 제공됩니다.

C:\xampp\htdocs\

(기본 구성이기 때문에) Apache가 TransitCalculator.php파일을 아래로 이동하지 않고 파일을 인식하고 처리하도록하는 방법이 htdocs있습니까? 가급적이면 Apache가 프로젝트 디렉토리의 전체 내용에 대한 액세스를 제공하고 싶고 프로젝트 디렉토리를 아래로 옮기고 싶지 않습니다 htdocs.

편집 : 질문 제목에 Apache를 추가하여 Q / A를보다 "검색 가능"하도록 편집했습니다.


1
태그는 충분히 검색 가능해야한다고 생각합니다.
icedwater

24
이 질문은 종결되어서는 안됩니다. 이것은 XAMPP 질문입니다. 이것은 개발자 질문입니다.
Andrew Koper

15
앤드류 코퍼 (Andrew Koper)는 동의하지만이 시점에서 스택 교환 생태계에서 전례가없는 우호적 인 수준은 놀랍지 않습니다. ¯_ (ツ) _ / ¯
cmcculloh

주제를 벗어 났지만 팁을 드리고 싶은 경우도 있습니다. 때로는 "htdocs"폴더로 디렉토리를 이동하는 방법도 있습니다. localhost의 Google 드라이브에서 파일을 열려면;) ( stackoverflow.com/questions/41751330/… )
Gordova

2
모든 답변 외에도 하나를 추가하고 싶습니다. PHP 5.4.0부터는 명령 행을 사용하여 프로젝트 루트로 이동하고를 실행할 수 php -S <host>:<port>있습니다. 예를 들면 php -S localhost:80.
radiantshaw

답변:


362

Ok, pix0r , SparksDave 의 답변에 따르면 다음 세 가지 방법이 있습니다.


가상 호스트

  1. C : \ xampp \ apache \ conf \ extra \ httpd-vhosts.conf를여십시오.
  2. 주석 해제 ~ 라인 19 ( NameVirtualHost *:80).
  3. 가상 호스트 추가 (~ 36 행) :

    <VirtualHost *:80>
        DocumentRoot C:\Projects\transitCalculator\trunk
        ServerName transitcalculator.localhost
        <Directory C:\Projects\transitCalculator\trunk>
            Order allow,deny
            Allow from all
        </Directory>
    </VirtualHost>
    
  4. 호스트 파일 (C : \ Windows \ System32 \ drivers \ etc \ hosts)을 엽니 다.

  5. 더하다

    127.0.0.1 transitcalculator.localhost #transitCalculator

    파일의 끝까지 (Spybot-설치 및 검색된 경우 검색 및 삭제 전)

  6. 저장 (데스크톱에 저장하고 이전 호스트 파일에 대한 권한을 변경 (오른쪽 클릭> 속성) 한 다음 새 파일을 이전 파일의 디렉토리에 복사하거나 이전 파일의 이름을 바꾸어야 할 수도 있습니다. 비스타와 문제가 있습니다).
  7. Apache를 다시 시작하십시오.

이제 http : //transitcalculator.localhost/를 찾아 해당 디렉토리에 액세스 할 수 있습니다 .


별칭 만들기

  1. ~ 당신의 라인 (200)부터 http.conf, 파일을 사이에 모든 것을 복사 <Directory "C:/xampp/htdocs">하고 </Directory>(~ 라인 232) 및 즉시 아래에 붙여 넣습니다 C:/xampp/htdocs(이 경우 원하는 디렉토리로 대체 C:/Projects) 새로운 디렉토리 서버에게 올바른 권한을 부여 할 수 있습니다.

  2. 찾기 <IfModule alias_module></IfModule>섹션 (~ 라인 300) 및 추가

    Alias /transitCalculator "C:/Projects/transitCalculator/trunk"

    Alias모듈 태그 내부의 주석 블록 아래 (또는 원하는대로) .


문서 루트 변경

  1. C : \ xampp \ apache \ conf \ httpd.conf에서 ~ 176 행을 편집하십시오. 변화 DocumentRoot "C:/xampp/htdocs"에 대한 #DocumentRoot "C:/Projects"(또는 무엇이든 당신이 원하는).

  2. ~ 위치 203을 편집하여 새 위치 (이 경우 C:/Projects) 와 일치 시키십시오 .


노트:

  • 백 슬래시 "\"대신 슬래시 "/"를 사용해야합니다.
  • 끝에 "/"를 포함시키지 마십시오.
  • 서버를 다시 시작하십시오 .

13
3 단계에서 C : \ Windows \ System32 \ drivers \ etc \ hosts를 편집하십시오. 관리자 (관리자)로서 편집기 (메모장, 메모장 ++ 또는 기타 편집기)를 먼저 실행하는 것이 가장 좋습니다. 따라서 C : \ Windows \ System32 \ drivers \ etc \ 폴더에 직접 저장할 수 있습니다.
CallMeLaNN

3
403 오류가 발생하면 이 링크를
Wojtek Owczarczyk

21
Order allow, deny Win7에서 모두 허용을 사용하면이 옵션은 더 이상 사용되지 않으므로 403 ERROR를 반환합니다. 모든 권한 부여 필요를 사용하십시오. stackoverflow.com/questions/9110179/…
hywak

4
내가 할 그냥 참고로,이 단계는 필요하지 않은 것으로 보입니다 : UN-주석 행 19 (NameVirtualHost에서 * : 80)
고릴라

2
사용하는 Order allow,deny Allow from all것이 Require all granted효과가 없었지만 효과가있었습니다.
Danny Beckett

96

XAMPP \ apache \ conf \ httpd.conf에서 DocumentRoot 설정 을 편집하여 재배치 할 수 있습니다 .

현재 다음과 같아야합니다.

C : / xampp / htdocs

다음으로 변경하십시오.

C : / 프로젝트 / 교통 계산기 / 트렁크


40
DocumentRoot를 요청하는 두 줄 모두에서 편집하는 것을 잊지 마십시오. 최상위 항목 만 변경하면 읽기 액세스 오류 등이 발생합니다.
Arcolye

2
이것은 XAMP mac에도 적용됩니까?
화난 키위

이제 어느 URL로 색인 페이지에 액세스 할 수 있습니까?
Manish Kumar

49

또한 VirtualHost는이 작업에 적합하며 하위 디렉토리없이 여러 프로젝트를 호스팅 할 수 있으므로 더 효과적 일 수 있습니다. 방법은 다음과 같습니다.

httpd.conf (또는 httpd.conf와 관련된 extra \ httpd-vhosts.conf. 슬래시 "\"는 작동하지 않을 수 있음) :

NameVirtualHost *:80
# ...
<VirtualHost *:80>  
    DocumentRoot C:\projects\transitCalculator\trunk\
    ServerName transitcalculator.localhost
    <Directory C:\projects\transitCalculator\trunk\>  
        Order allow,deny  
        Allow from all  
    </Directory>
</VirtualHost> 

HOSTS 파일 (c : \ windows \ system32 \ drivers \ etc \ hosts) :

# localhost entries
127.0.0.1 localhost transitcalculator.localhost

이제 XAMPP를 다시 시작하면 http : //transitcalculator.localhost/ 에 액세스 할 수 있으며 해당 디렉토리에 바로 매핑됩니다.

도메인 이름의 루트에있는 사이트를 개발하는 프로덕션 환경을 복제하려고 할 때 유용합니다. 예를 들어 서버에 전달할 절대 경로가있는 파일을 가리킬 수 있습니다.

<img src="/images/logo.png" alt="My Logo" />

별명 또는 서브 디렉토리를 사용하는 환경에서는 "images"디렉토리가 현재 파일의 상대 위치를 정확하게 추적해야합니다.


PC에 드라이브 문자 (예 :)로 매핑 된 네트워크 드라이브가 여러 개 있습니다 X:\myfolder. 이 방법을 사용하면 "접근 금지"경고 메시지가 나타납니다. 이것은 Apache 사용자가 드라이브에 대한 읽기 권한이 없음을 의미합니까?
harryg

1
아래에서 Directory교체 Order allow,denyAllow from allRequire all granted. 참조 stackoverflow.com/questions/9110179/...
미키 엘

16

제한이있는 어느 곳에서나 페이지를 제공하도록 Apache를 설정할 수 있지만 일반적으로 더 안전한 형태로 배포됩니다.

아파치 파일을 편집하면 (http.conf는 가장 일반적인 이름 중 하나임) 웹 루트에 나타나도록 폴더를 설정할 수 있습니다.

편집하다:

별명 myapp c : \ myapp \

http.conf 파일에 별칭을 만드는 형식을 포함하도록 내 대답을 편집했습니다.이 형식은 Windows의 단축키 또는 Apache가 웹 루트에있는 'untenx'인 un * x의 심볼릭 링크와 같습니다. 이것은 아마도 당신에게 장기적으로 더 유용 할 것입니다.


10

XAMPP가 네트워크 드라이브를 문서 루트로 사용하도록하려면 httpd.conf에서 UNC 경로를 사용해야합니다. XAMPP는 매핑 된 네트워크 드라이브를 인식하지 못합니다.

예를 들어 다음은 작동하지 않습니다. DocumentRoot "X : / webroot"

그러나 이것은 DocumentRoot "//192.168.10.100/webroot"입니다 (역 슬래시가 아니라 슬래시에 유의하십시오)


매핑 된 네트워크 드라이브에서 제대로 작동합니다.
Sean Kendle

7

Apache 2가 htdocs 외부의 웹 사이트를 호스팅 할 수있는 솔루션 :

httpd.conf의 "DocumentRoot"지시문 아래에 디렉토리 블록이 나타납니다. 이 디렉토리 블록을 다음으로 바꾸십시오.

<Directory />
    Options FollowSymLinks
    AllowOverride All
    Allow from all
</Directory> 

실제 환경에서는이 구성을 사용하지 마십시오.


symlinc를 지원하는 파일 시스템에만 작동합니다. 이 옵션을 사용하지 않아야하는 이유에 대한 설명이 없습니다.
Danubian Sailor
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.