문제

mod_vhost_alias를 통해 와일드 카드 하위 도메인을 활성화하고 싶은 몇 가지 도메인이 있습니다.

내 httpd.conf에 포함 된 일반화 규칙이 있습니다.

<VirtualHost [ip here]:80>
    ServerName domain1.com
    ServerAlias www.domain1.com
    DocumentRoot /home/user1/public_html
</VirtualHost>
<VirtualHost [ip here]:80>
    ServerName *.domain1.com
    VirtualDocumentRoot /home/user1/subdomains/%-3+
</VirtualHost> 

<VirtualHost [ip here]:80>
    ServerName domain2.com
    ServerAlias www.domain2.com
    DocumentRoot /home/user2/public_html
</VirtualHost>
<VirtualHost [ip here]:80>
    ServerName *.domain2.com
    VirtualDocumentRoot /home/user2/subdomains/%-3+
</VirtualHost>

문제는 Apache가 WildCard ServerNames의 VirtualHosts를 완전히 무시하고 있다는 것입니다. test.domain1.com 또는 test.domain2.com에 대한 모든 요청에는/home/user1/public_html의 내용이 표시됩니다 (Apache에 따른 기본 규칙).

기타 정보 :

/home/user1/subdomains/test 그리고 /home/user2/subdomains/test 둘 다 존재하고 파일이 있습니다

내 모든 도메인에는 바인드 구성에 와일드 카드 하위 도메인이 나열되어 있으며 Vhost 규칙에 지정된 동일한 IP를 가리키고 있습니다. 하위 도메인 작업에 대한 표준 Vhost 규칙은 작동하지만 와일드 카드는 아닙니다.

출력의 스니핑 버전 httpd -S

# httpd -S
VirtualHost configuration:
[ip here]:80      is a NameVirtualHost
         default server domain1.com (/etc/httpd/sites/user1:1)
         port 80 namevhost domain1.com (/etc/httpd/sites/user1:1)
         port 80 namevhost *.domain1.com (/etc/httpd/sites/user1:14)
         port 80 namevhost domain2.com (/etc/httpd/sites/user2:1)
         port 80 namevhost *.domain2.com (/etc/httpd/sites/user2:14)
Syntax OK
# httpd -M
Loaded Modules:
 core_module (static)
 mpm_prefork_module (static)
 http_module (static)
 so_module (static)
 rewrite_module (shared)
 auth_basic_module (shared)
 authz_host_module (shared)
 include_module (shared)
 log_config_module (shared)
 logio_module (shared)
 mime_magic_module (shared)
 mime_module (shared)
 vhost_alias_module (shared)
 dir_module (shared)
 suexec_module (shared)
 php5_module (shared)
 suphp_module (shared)
 ssl_module (shared)
Syntax OK

문제가 무엇인지에 대한 제안은 크게 감사 할 것입니다.

도움이 되었습니까?

해결책

나는 그런 멍청이, 정말 간단한 솔루션이었습니다.

ServerName 와일드 카드를 허용하지는 않지만 ServerAlias 그렇게하므로 ServerName을 다시 복제했습니다.

다음은이 답변을 찾는 도메인에 대한 최종 최소 최소 구성 구성입니다 (Google에서 검색하고 질문을 찾을 때 싫어하지만 답이 없습니다).

<VirtualHost [ip here]:80>
    ServerName domain1.com
    ServerAlias www.domain1.com
    DocumentRoot /home/user1/public_html
</VirtualHost>
<VirtualHost [ip here]:80>
    ServerName domain1.com #<-- The fix. Wildcards not supported in ServerName
    ServerAlias *.domain1.com
    VirtualDocumentRoot /home/user1/subdomains/%-3+
</VirtualHost>

다른 팁

David, 성공할 때 mod_rewrite 사이클을 중지하는이 솔루션은 문제에 유용 할 것입니다).

라운드 로빈 스토퍼 재 작성 :

RewriteCond %{ENV:REDIRECT_STATUS} 200|[45]0[0-9]
RewriteRule .* - [L]
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top