저는 Directory와 VirtualHost 지시문을 사용하는 방법을 이해하고 있습니다. 나는 그것들을 혼합할 수 없다는 것을 이해합니다(중첩할 수는 있지만). 이들을 혼합하면 작동했던 디렉토리 유형 URL에 대해 404를 찾을 수 없습니다.
그렇다면 내 구성 파일에서 "localhost/my/website" 및 "mydomainname.com"과 같은 두 URL 검색을 어떻게 지원할 수 있습니까?
내 근거: mydomainname.com이 https를 사용하도록 하고 다른 웹사이트는 http를 사용하도록 하고 싶습니다. 내 HOSTS 파일(내 로컬 DNS)에 mydomainname.com이 127.0.0.1로 변환되어 있으므로 해결책에 가까워야 한다고 생각합니다.
나는 몇 시간 동안 이 작업을 해왔지만 아무데도 도달하지 못했습니다. Apache 문서가 도움이 되지 않습니다.
이상적으로는 누군가가 내가 원하는 것을 달성하는 방법을 스케치해 줄 수 있습니다.
답변1
질문에 따르면 Directory
와 의 차이점을 이해하지 못하는 것 같습니다 VirtualHost
.
<Directory>
</Directory>
명명된 디렉터리, 해당 디렉터리의 하위 디렉터리 및 해당 디렉터리 내의 파일에만 적용되는 지시문 그룹을 묶는 데 사용됩니다 .
<VirtualHost>
</VirtualHost>
특정 가상 호스트에만 적용되는 지시문 그룹을 묶는 데 사용됩니다 . 가상 호스트 컨텍스트에서 허용되는 모든 지시문을 사용할 수 있습니다. 서버가 특정 가상 호스트의 문서에 대한 요청을 받으면 해당<VirtualHost>
섹션에 포함된 구성 지시문을 사용합니다.
지시어 <Directory>
는 "디렉터리 유형 URL"을 제어하지 않습니다.그만큼DocumentRoot
그리고Alias
지시문은 파일 시스템에서 콘텐츠가 발견되는 위치를 제어합니다. 이러한 지시어는 서버 구성이나 <VirtualHost>
.
당신이 달성하려는 것을 위해서는 단순히 s <VirtualHost>
가 다른 두 개의 s가 필요합니다 DocumentRoot
. 예:
Listen 80
<VirtualHost *:80>
DocumentRoot "/var/www"
ServerName localhost
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/var/www/examplecom"
ServerName example.com
</VirtualHost>
이제 동일한 웹사이트에 대한 http://localhost/examplecom/
및 가 모두 있습니다 . http://example.com/
사이트가 모두 동일한 파일 시스템 디렉토리 아래에 있지 않으면 es를 사용해야 합니다 Alias
. 예:
Listen 80
<VirtualHost *:80>
DocumentRoot "/var/www"
ServerName localhost
Alias "/examplecom" "/home/user/sites/example.com"
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/home/user/sites/example.com"
ServerName example.com
</VirtualHost>