2012-10-22 7 views
2

나는 Virtualmin API를 사용하여 PHP로 세 번째 레벨 도메인 시리즈를 만들고있다. 각 하위 도메인에 대응하는 서브 디렉토리를 제공하는 솔루션이 필요합니다. 즉,
sub1.domain.com은 C : \ xampp \ htdocs \ domain_com \ subsites \ sub1에 있습니다.
sub2.domain.com => C : \ xampp \ htdocs \ domain_com \ subsites \ sub2.
나는 Virtualmin API로이 일을해야하지만, 사용자는 리다이렉트되어있는 서브 디렉토리를 볼 수 있으며 나쁘다. 서브 도메인은 httpd.conf의 일반적인 해결책을 사용하여 서브 디렉토리에서 아파치를 계속 수정하고 다시 시작하지 않기 위해 변환되어야한다. 한편 사용자에게 보여지는 URL은 "sub1.domain.com/whatever_dir/user_file.php"로 남아 있어야합니다. 나는이 것과 같은 RewriteRule의 그것을 얻기 위해 시도했다 :세 번째 레벨 도메인

<VirtualHost *:80> 
    ServerName www.domain.com 
    ServeAlias *.domain.com 
    DocumentRoot C:/xampp/htdoc/domain_com/ 
    Option +FollowSymLinks 
    RewriteEngine On 
    RewriteCond %{HTTP_HOST} !^www.domain.com 
    RewriteCond %{HTTP_HOST} ^(w*).domain.com 
    RewriteRule ^$ subsites/%1%{REQUEST_URI} 
</VirtualHost> 

을 내가 '% 1'디렉토리에있는 모든 파일을 호출하는 succeded이 규칙으로. 그러나이 파일 중 누군가가 그림이나 다른 리소스를 호출하면이 리소스의 경로는 호출하는 파일이 아니라 문서 루트를 항상 참조합니다. 따라서 파일은 올바르게 호출되지만 잘못된 리소스 경로가 있습니다.

그리고 Alias, AliasMatch에서도 마찬가지입니다. 나는 Alias와 RewriteRules가이 목표를위한 옳은 수단이 아니라는 것을 깨닫기 시작하지만 다른 것들은 모른다.

감사합니다. 누군가가 제안을하기를 바랍니다. 에마누엘레.

답변

0

부담없이 문제를 해결했습니다. RewriteRule은 요청을 다른 곳으로 리디렉션하는 효과가 있습니다. 이 작업을 수행 할 때마다 Apache는 새로운 어플라이언스를 상기시킵니다. 그러면 내부 서버 오류가 발생했습니다! - 실례지만,이 블로그를 어떻게 사용하는지 모르겠습니다. 수정 사항이 있습니다.

<VirtualHost :80> 
    ServerName www.domain.it 
    ServerAlias *.domain.it 
    DocumentRoot "C:/xampp/htdocs/domain_com" 
    <Directory "C:/xampp/htdocs/domain_com"> 
    Options FollowSymlinks 
    RewriteEngine On 
    RewriteCond %{HTTP_HOST} !^www. 
    RewriteCond %{HTTP_HOST}%{REQUEST_URI} ^([0-9A-Za-z_-]+).domain.com(.*/?)([0-9A-Za-z-_.?&=%])$ 
    RewriteRule !^siti siti/%1/%2%3 
    </Directory> 
이런 식으로

는 먼저 규칙은 요청에 접두사 "SITI을 /"를 추가하고, whatother 나에게 필요합니다. 아파치가 경로에서 다시 돌아 오면, "!"가 아닌 "siti"로 "^"시작하고, 멈추게한다. 실제로 그것은 완벽하게 기능합니다.

관련 문제