2014-12-27 3 views
3

나는 가입 할 때 각 사용자의 하위 폴더를 만드는 PHP 스크립트를 사용하고 있습니다. 예 : domain.com/users/user1하위 도메인을 하위 폴더에 자동으로 매핑하는 방법

서브 도메인을이 하위 폴더에 매핑해야합니다 (예 : user1.domain.com).

저는 XAMPP를 사용 중이며 this tutorial을 따라 갔으며 잘 작동했습니다.

하지만 모든 사용자/하위 도메인에 대해이 작업을 수행해야합니다!

사용자가 가입 할 때 자동으로해야합니다.

+0

모든 사용자에 대해 하위 도메인을 설정하려는 이유는 무엇입니까? 목적은 무엇입니까? 웹 호스팅? – LucasF

+0

@ 루카스 예, 웹 호스팅 –

+0

이 질문은 [ServerFault] (http://serverfault.com/)에 게시되어야합니다 ... –

답변

3

Apache에서 대량 가상 호스팅을 수행하려고합니다. 여기에서 당신은 어떻게 할 수있는 정보를 찾을 것이다 : 당신이 연결 한 튜토리얼에서 예를 바탕으로

Dynamically configured mass virtual hosting

:

NameVirtualHost * 
    <VirtualHost *> 
    DocumentRoot "C:\xampp\htdocs" 
    ServerName localhost 
    </VirtualHost> 
    <VirtualHost *> 
    DocumentRoot "C:\Documents and Settings\Me\My Documents\clientA\website" 
    ServerName clientA.local 
    <Directory "C:\Documents and Settings\Me\My Documents\clientA\website"> 
    Order allow,deny 
    Allow from all 
    </Directory> 
</VirtualHost> 
<VirtualHost *> 
    DocumentRoot "C:\Documents and Settings\Me\My Documents\clientB\website" 
    ServerName clientB.local 
    <Directory "C:\Documents and Settings\Me\My Documents\clientB\website"> 
    Order allow,deny 
    Allow from all 
    </Directory> 
</VirtualHost> 

이 구성에 관한 문제는 정적하다는이고, Apache를 변경하면 다시 시작해야합니다.

먼저 DNS 서버에 모든 하위 도메인을 서버에 매핑하는 레코드가 필요합니다. 이처럼 :

*.local. 3600 IN A x.x.x.x 

로컬 호스트에서이를 테스트하려면, 당신은 수동으로 hosts 파일에 일부 하위 도메인을 설정할 수 있습니다. hosts 파일에서 와일드 카드 하위 도메인을 설정할 수없는 이유는 here을 참조하십시오.

는 httpd.conf 파일에 vhost_alias_module를로드하는 것을 잊지 마세요 :

LoadModule vhost_alias_module modules/mod_vhost_alias.so 

그런 다음이 예와 같이, 가상 호스트 설정을 대체합니다 :

<VirtualHost *> 
    # get the server name from the Host: header 
    UseCanonicalName Off 

    # this log format can be split per-virtual-host based on the first field 
    LogFormat "%V %h %l %u %t \"%r\" %s %b" vcommon 
    CustomLog logs/access_log vcommon 

    # include the server name in the filenames used to satisfy requests 
    VirtualDocumentRoot "C:/Documents and Settings/Me/My Documents/%1/website" 

    <Directory "C:/Documents and Settings/Me/My Documents/*/website"> 
     Options Indexes FollowSymLinks 
     AllowOverride All 
     Order allow,deny 
     Allow from all 
     Require all granted 
     DirectoryIndex index.php index.html index.htm 
    </Directory> 
</VirtualHost> 

이 설정 와일드 카드를 사용합니다 요구 된 서브 도메인의 문서 루트.

+0

나는 잠재적으로 많은 일을 알고 있지만 최소한 하나의 기본 예제를 인라인하려고합니다. 링크가 변경된 경우 (아파치 2 문서 이후 발생하지는 않지만 누가 알겠는가)를 대비하여 답장에 문서를 넣으십시오. 그러면 향후 다른 사람들이 구체적으로 언급 할 수있는 구체적인 내용이 있습니다. – prodigitalson

+0

@LucasF이 주제는 전에 읽었으며 완전히 이해하거나 내 웹 사이트에 적용 할 수 없습니다. 여기서 간단히 설명해 주시겠습니까? –

1

내 서버의 기본 가상 호스트를 사용하여 이와 비슷한 기능을 구현했습니다. 모든 하위 도메인이 적절한 IP 주소를 가리 키도록 DNS 설정을했다고 가정하면 모든 호스트가 기본 가상 호스트로 확인되어야합니다. 기본 가상 호스트가 가리키는 폴더에서도 하위 도메인을 사용하여 적절한 콘텐츠를 제공하는 index.php 파일이 있어야합니다.

/etc/hosts 파일을 편집하고 로컬 DNS의 하위 도메인을 로컬 호스트로 지정하여 XAMPP를 사용하여 로컬로 복제 할 수 있습니다. webroot를 index.php 파일의 위치로 설정하고 $ _SERVER vars에서 도메인 이름을 가져옵니다. 거기에서 하위 도메인별로 사용자를 결정하고 프로그래밍 방식으로 콘텐츠를 표시 할 수 있습니다.

1

이 작업을 수행하려면 Plesk 또는 Webmin과 같은 web hosting control panel을 설치할 수 있습니다. 친숙한 GUI를 사용하여 하위 도메인을 구성하고 백그라운드에서 모든 핵심 구성을 수행합니다. 이것이 실제 호스팅 제공 업체가 사용하는 것입니다.

0

나는 이것에 대해 잠시 생각해 왔지만 결코 테스트하지 않았습니다. CodeIgniter와 같은 일부 MVC 프레임 워크와 동일한 접근 방식을 시도해야한다고 생각합니다.

모든 요청을 라우팅하려면 index.php를 사용하십시오. $ _SERVER [ "HTTP_HOST"]을 가져 와서 하위 도메인을 파싱합니다. 하위 도메인로드 뷰에 따라 다름 (MVC에서와 같이보기)

관련 문제