복붙노트

각 사용자에 대해 자동으로 하위 도메인을 만들도록 PHP를 설정하는 방법은 무엇입니까?

PHP

각 사용자에 대해 자동으로 하위 도메인을 만들도록 PHP를 설정하는 방법은 무엇입니까?

http://user.mywebsite.com과 같은 하위 도메인은 어떻게 만듭니 까? 어떻게 든 htaccess에 액세스해야합니까? 그것은 순수하게 PHP 코드를 사용하여 실제로 만들 수 있습니까 아니면 일부 외부 스크립트 - 서버 측 언어를 사용해야합니까?

응답 한 사람들에게 : 글쎄, 그럼, 만약 그들이 일종의 DNS 액세스를 제공하는지 내 호스팅에 물어야합니까 ??

해결법

  1. ==============================

    1.사용자 지정 A 레코드를 만들려고합니다.

    사용자 지정 A 레코드를 만들려고합니다.

    나는 당신이 다음과 같이 할 수있는 A 레코드를 지정할 때 와일드 카드를 사용할 수 있다고 확신한다.

    *.mywebsite.com       IN  A       127.0.0.1
    

    127.0.0.1은 웹 서버의 IP 주소입니다. 실제로 레코드를 추가하는 방법은 호스트에 따라 다릅니다.

    http://mywebsite.com/user와 같은 작업을 수행하는 것이 옵션 인 경우 설정하는 것이 훨씬 쉽습니다.

    다음과 같이 .htaccess 파일을 추가하면됩니다.

    Options +FollowSymLinks
    
    RewriteEngine On
    RewriteRule ^([aA-zZ])$  dostuff.php?username=$1
    

    위의 경우 사용자 이름은 a-z 문자로 제한됩니다.

    하위 도메인을 가져 오는 재 작성 규칙은 다음과 같습니다.

    RewriteCond %{HTTP_HOST} ^(^.*)\.mywebsite.com
    RewriteRule (.*)  dostuff.php?username=%1
    
  2. ==============================

    2.이후의 기능을 와일드 카드 하위 도메인이라고합니다. 각 하위 도메인에 대해 DNS를 설정할 필요없이 리디렉션을 위해 Apache 재 작성을 사용할 수 있습니다. 여기에 멋진 튜토리얼을 찾을 수 있지만 거기에는 수천 개의 튜토리얼이 있습니다. 이 자습서에서 필요한 코드는 다음과 같습니다.

    이후의 기능을 와일드 카드 하위 도메인이라고합니다. 각 하위 도메인에 대해 DNS를 설정할 필요없이 리디렉션을 위해 Apache 재 작성을 사용할 수 있습니다. 여기에 멋진 튜토리얼을 찾을 수 있지만 거기에는 수천 개의 튜토리얼이 있습니다. 이 자습서에서 필요한 코드는 다음과 같습니다.

    <VirtualHost 111.22.33.55>
        DocumentRoot /www/subdomain
        ServerName www.domain.tld
        ServerAlias *.domain.tld
    </VirtualHost>
    

    그러나 VirtualHosts를 사용해야하므로 로컬 .htaccess 대신 서버의 httpd.conf 파일에 설정해야합니다.

  3. ==============================

    3.나는 Mark와 조금 다르다. 나는 전체 도메인을 통과하고 PHP에서 하위 도메인을 움켜 잡는다.

    나는 Mark와 조금 다르다. 나는 전체 도메인을 통과하고 PHP에서 하위 도메인을 움켜 잡는다.

    RewriteCond {REQUEST_URI} !\.(png|gif|jpg)$
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ /index.php?uri=$1&hostName=%{HTTP_HOST}
    

    이것은 이미지를 무시하고 내 모든 것을 내 index.php 파일에 매핑합니다. 그래서 내가 가면

    http://fred.mywebsite.com/album/Dance/now
    

    난 돌아가 겠어

    http://fred.mywebsite.com/index.php?uri=album/Dance/now&hostName=fred.mywebsite.com
    

    그런 다음 내 index.php 코드에서 hostName의 사용자 이름을 폭발시킵니다. 이것은 저에게 멋진 예쁜 SEO URL을 제공합니다.

  4. ==============================

    4.위에서 설명한 것처럼 와일드 카드 DNS를 설정합니다. 따라서 레코드는 * .yourname.com입니다.

    위에서 설명한 것처럼 와일드 카드 DNS를 설정합니다. 따라서 레코드는 * .yourname.com입니다.

    그런 다음 모든 하위 도메인은 실제로 같은 위치로 이동하지만 PHP는 각 하위 도메인을 다른 계정으로 취급합니다.

    다음 코드를 사용합니다.

    $url=$_SERVER["REQUEST_URI"];
    $account=str_replace(".yourdomain.com","",$url);
    

    이 코드는 $ account 변수를 하위 도메인과 동일하게 설정합니다. 그런 다음 자신의 계정을 기반으로 파일 및 기타 정보를 검색 할 수 있습니다.

    이것은 아마 위에 나열된 방법만큼 효율적이지는 않지만 BIND 및 / 또는 제한된 .htaccess에 대한 액세스 권한이없는 경우이 방법이 작동해야합니다 (호스트가 사용자에 대해 와일드 카드를 설정하는 한).

    우리는 실제로이 방법을 사용하여 다중 회사 전자 상거래 응용 프로그램의 고객 데이터베이스에 연결하지만 사용자를 위해 잘 작동 할 수도 있습니다.

  5. ==============================

    5.Apache 대량 가상 호스팅을 사용할 수있는 경우 .htaccess 파일로 주위를 조롱하지 마십시오.

    Apache 대량 가상 호스팅을 사용할 수있는 경우 .htaccess 파일로 주위를 조롱하지 마십시오.

    문서에서 :

    어떤면에서는 귀하의 질문과 반대입니다. 모든 '하위 도메인'은 사용자입니다. 사용자가 없으면 404가 표시됩니다.

    유일한 단점은 환경 변수 DOCUMENT_ROOT가 사용 된 서브 디렉토리로 올바르게 설정되지 않았지만 htconfig의 기본 document_root입니다.

  6. ==============================

    6.하위 도메인 및 다중 도메인 웹 앱을위한 간단한 PHP 솔루션

    하위 도메인 및 다중 도메인 웹 앱을위한 간단한 PHP 솔루션

    1 단계. "example.org"를 제공 할 도메인 (또는 도메인)에 대해 DNS A 레코드를 "*"로 제공하십시오.

    A record => *.example.org
    A record => *.example.net
    

    2 단계. 사용자가 로그인을 등록하거나 변경할 때 로그인의 고유성을 확인하십시오. 또한 로그인시 점을 사용하지 마십시오.

    3 단계. 그런 다음 쿼리를 확인하십시오.              // 요청은 http://qwerty.example.org입니다.         $ q = 폭발 ( '.', $ _SERVER [ 'HTTP_HOST']);         / *             다음과 같은 배열을 얻습니다.             정렬             (                 [0] => 쿼티                 [1] => 예                 [2] => 조직             )         * /         // Step 4.         // 배열의 두 번째 부분이 있으면 요청이있었습니다.         // 제로 피스에 저장된 SUBDOMAIN $ q [0]         // 그렇지 않으면 DOMAIN에 대한 것입니다.         if (isset ($ q [2])) {             // 로그인 $ q [0]에 대한 데이터베이스에서 물건을 찾거나 여기서 "qwerty"             // $ q [1]을 사용하여 여러 도메인을 제공하는 경우 요청되는 도메인을 확인합니다.         } ?> 이 솔루션은 다른 도메인을 제공 할 수 있습니다. qwerty.example.org qwerty.example.net johnsmith.somecompany.com paulsmith.somecompany.com 다르게 제공되는 다른 도메인에서 동일한 닉이 필요한 경우, 로그인을 등록 할 때 도메인에 사용자 choise를 저장해야 할 수도 있습니다. smith.example.org // John Smith에 대한 정보 표시 smith.example.net // Paul Smith에 대한 정보 표시

  7. ==============================

    7.[잠재적으로] URL을 다시 작성할 수는 있지만 예 : DNS 설정을 제어해야 사용자를 추가 할 때 자체 서브 도메인이 생길 수 있습니다.

    [잠재적으로] URL을 다시 작성할 수는 있지만 예 : DNS 설정을 제어해야 사용자를 추가 할 때 자체 서브 도메인이 생길 수 있습니다.

  8. ==============================

    8.새 하위 도메인을 처리하기 위해 WWW 서버에서 구성을 변경하는 것 외에도 코드에서 DNS 레코드를 변경해야합니다. 따라서 자신의 BIND (또는 유사)를 실행하지 않는 한 네임 서버 제공 업체의 구성에 액세스하는 방법을 알아야합니다. API의 일종을 제공하지 않으면이 작업이 까다로울 수 있습니다.

    새 하위 도메인을 처리하기 위해 WWW 서버에서 구성을 변경하는 것 외에도 코드에서 DNS 레코드를 변경해야합니다. 따라서 자신의 BIND (또는 유사)를 실행하지 않는 한 네임 서버 제공 업체의 구성에 액세스하는 방법을 알아야합니다. API의 일종을 제공하지 않으면이 작업이 까다로울 수 있습니다.

    업데이트 : 예, 등록 기관에서 이름 서버 서비스도 제공하는지 확인합니다 (종종 그렇듯이). 나는 전에이 옵션을 살펴 본 적이 없지만 대부분의 소비자 등록자는 그렇지 않다고 생각합니다. GoDaddy API 및 GoDaddy DNS API에 대한 인터넷 검색을 수행했지만 아무것도 설정할 수 없었기 때문에 최상의 옵션은 공급자의 온라인 도움말을 확인하는 것이고 질문에 대답하지 않으면 보류 그들의 지원 직원.

  9. ==============================

    9.먼저 와일드 카드 하위 도메인을 허용하도록 서버를 구성해야합니다. 나는 * 수동으로 명명 된 서브 도메인을 생성하여 JustHost에서이를 달성했다. 또한 와일드 카드 하위 도메인의 문서 루트로 subdomains라는 폴더를 지정했습니다. 이것을 subdomains 폴더의 .htaccess 파일에 추가하십시오.

    먼저 와일드 카드 하위 도메인을 허용하도록 서버를 구성해야합니다. 나는 * 수동으로 명명 된 서브 도메인을 생성하여 JustHost에서이를 달성했다. 또한 와일드 카드 하위 도메인의 문서 루트로 subdomains라는 폴더를 지정했습니다. 이것을 subdomains 폴더의 .htaccess 파일에 추가하십시오.

    RewriteEngine On
    RewriteCond %{HTTP_HOST} !^www\.website\.com$
    RewriteCond %{HTTP_HOST} ^(\w+)\.website\.com$
    RewriteCond %{REQUEST_URI}:%1 !^/([^/]+)/([^:]*):\1
    RewriteRule ^(.*)$ /%1/$1 [QSA]
    

    마지막으로, 하위 도메인 폴더에 폴더를 만든 다음 하위 도메인의 파일을 해당 디렉토리에 배치하기 만하면됩니다.

  10. ==============================

    10.서버가 와일드 카드 하위 도메인을 허용하도록 구성된 경우 .htaccess에서이를 수행 할 수 있습니다. JustHost에서 * 수동으로 명명 된 하위 도메인을 만들고 와일드 카드 하위 도메인의 문서 루트로 subdomains라는 폴더를 지정하여 구현했습니다. .htaccess 파일에 다음을 추가하십시오.

    서버가 와일드 카드 하위 도메인을 허용하도록 구성된 경우 .htaccess에서이를 수행 할 수 있습니다. JustHost에서 * 수동으로 명명 된 하위 도메인을 만들고 와일드 카드 하위 도메인의 문서 루트로 subdomains라는 폴더를 지정하여 구현했습니다. .htaccess 파일에 다음을 추가하십시오.

    RewriteEngine On
    RewriteCond %{HTTP_HOST} !^www\.website\.com$
    RewriteCond %{HTTP_HOST} ^(\w+)\.website\.com$
    RewriteCond %{REQUEST_URI}:%1 !^/([^/]+)/([^:]*):\1
    RewriteRule ^(.*)$ /%1/$1 [QSA]
    

    마지막으로 하위 도메인의 폴더를 만들고 하위 도메인 파일을 배치합니다.

  11. ==============================

    11.CloudFlare (무료)를 사용하는 경우 API를 사용하여 DNS를 쉽게 관리 할 수 ​​있다는 점을 추가하고 싶었습니다.

    CloudFlare (무료)를 사용하는 경우 API를 사용하여 DNS를 쉽게 관리 할 수 ​​있다는 점을 추가하고 싶었습니다.

  12. from https://stackoverflow.com/questions/183928/how-to-let-php-to-create-subdomain-automatically-for-each-user by cc-by-sa and MIT license