2013-01-09 2 views
0

apache가 origin.datingasia.co라는 도메인 이름으로 표시되면 VirtualHost 항목 아래에 모두 일치합니까? '//www.etc.etct HTTP'자동 재 않습니다 여기에 추가가를 : 예 - Apache VirtualHosts

<VirtualHost *:80> 
    ServerName datingasia.co 
    ServerAlias www.datingasia.co 
    RewriteEngine on 
    RewriteCond %{HTTP_HOST} !^www\. [NC] 
    RewriteRule ^(.*) http://www.%{HTTP_HOST}$1 [R=301,L] 
</VirtualHost> 

<VirtualHost *:80> 
    DocumentRoot /var/www/html/datingasia.co 
    ServerName origin.datingasia.co 
    ServerAlias origin.datingasia.co 
</VirtualHost> 

또한 한 번 도메인은 재 작성 규칙을 적용하고있다? 이것은 DocumentRoot 경로가 사용되기 전에 발생합니까?

답변

1

"origin.datingasia.co"도메인에 대해 두 번째 항목 만 트리거됩니다. 첫 번째 매개 변수도 트리거하려면 두 번째 ServerAlias ​​매개 변수를 추가해야합니다.

ServerAlias origin.datingasia.co 

두 번째 항목에 동일한 ServerAlias가 있기 때문에 문제가 발생할 수 있습니다. 모든 ServerName/ServerAlias는 고유해야합니다. 그렇지 않으면 Apache는 요청에 사용할 블록을 알 수 없습니다.

첫 번째 항목은 "datingasia.co"및 "www.datingasia.co"에 대한 요청 만 수신합니다. 재 작성 규칙 조건이 충족되지 않은 경우 DocuemntRoot가 누락되었습니다 (IE : www.datingasia.co). 아파치는 요청을 처리 할 루트를 알지 못하기 때문에 요청이 www.datingasia.co 페이지에 도착하면 실패하게됩니다. 방문자가 "datingasia.co"를 방문하면 브라우저가 자동으로 "www.datingasia.co"로 리디렉션됩니다.

두 번째 항목의 경우 이미 ServerName에 정의 된 도메인이 있으므로 "ServerAlias ​​origin.datingasia.co"가 필요하지 않습니다. 추가 고유 도메인이이 호스트를 가리 키도록하려는 경우에만 ServerAlias ​​라인이 필요합니다 (IE : ServerAlias ​​www.origin.datingasia.co).

다시 쓰기 규칙이 호스트에 있으므로 조건이 충족되면 Apache에는 DocumentRoot가 필요하지 않습니다. 그러나 조건이 충족되지 않으면 Apache는 요청을 처리하려고 시도하고 결과적으로 DocumentRoot가 필요합니다. 귀하의 규칙은 "www.datingasia.co"로 "datingasia.co"를 전달하지만 DocumentRoot가 누락되어 RewriteCond를 충족시키지 않으므로 "www.datingasia.co"에서 실패합니다.

관련 문제