아파치 가상 호스트

아파치 가상 호스트

나는 이것을 하려고 해요

<VirtualHost *>
    ServerName myDomain.com
    DocumentRoot /var/www/myDomain

    <Directory /var/www/myDomain>
         Rewrite on
         RewriteRule ^blog/(.*)$ /var/www/myBlog/$1 [L]
    </Directory>
</VirtualHost>

그래서 http://www.myDomain.com/blog/다른 디렉토리에서 파일을 읽습니다. 위의 방법은 작동하지 않습니다. 파일을 이동하지 않고 어떻게 할 수 있습니까?

답변1

이를 위해 mod_rewrite를 사용할 필요가 없습니다. 별명더 적합합니다.

# Alias: Maps web paths into filesystem paths and is used to
# access content that does not live under the DocumentRoot.
Alias /blog /var/www/myBlog

블로그의 설정만 변경하려면 다음을 추가하세요.위치 지시어.

<Location /blog>
    Allowoverride All
</Location>

답변2

다음과 같이 하세요:

<VirtualHost *>
  ServerName myDomain.com
  DocumentRoot /var/www/myDomain
  Alias /blog/ /var/www/myBlog/
</VirtualHost>

답변3

Location태그는 Apache 지시어에 대한 일반적인 컨테이너이므로 웹사이트의 '외부 보기' 섹션에 적용하려는 모든 항목을 '래핑'하는 데 사용하세요. 여러 물리적 디렉터리의 콘텐츠를 하나의 더 큰 구조로 가져오는 경우 매우 유용합니다. 여러 Directory항목을 갖는 대신 동일한 규칙 세트를 모든 디렉터리에 적용할 수 있습니다.

Alias지시문은 간단한 리디렉션으로, 짧고 깔끔한 포인터로 표시되는 긴 경로에 적합합니다.

DocumentRoot지시문은 최상위 웹 콘텐츠 디렉터리를 설정합니다.

모두 디렉토리를 다루지만 약간씩 다릅니다. 위치는 주로 내가 '웹 보기'라고 부르는 것, 즉 외부에서 보이는 방식을 처리하기 위한 것입니다. 디렉토리는 파일 시스템의 실제 디렉토리를 다루는 '물리적 보기'를 위한 것입니다. 한 디렉토리의 콘텐츠가 하나의 URL로 제공되면 이들 사이에는 기능적 차이가 없습니다.

그러나 여러 디렉터리를 '구성'하기 시작하면 파일 시스템 계층 구조를 반드시 미러링하지 않는 여러 URL에서 해당 디렉터리를 제공하므로 원하는 효과를 얻으려면 이러한 모든 지시문을 혼합하고 일치시켜야 합니다. 두 지시어가 한 상황에서 동일하게 동작할 수 있다고 해서 다른 상황에서도 같은 방식으로 동작한다는 의미는 아닙니다.

관련 정보