Apache/local에서 디렉터리 액세스와 명명된 호스트 액세스를 모두 지원하려면 어떻게 해야 합니까?

Apache/local에서 디렉터리 액세스와 명명된 호스트 액세스를 모두 지원하려면 어떻게 해야 합니까?

저는 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>

관련 정보