각 사용자에 대해 자동으로 하위 도메인을 만들도록 PHP를 설정하는 방법은 무엇입니까?
PHP각 사용자에 대해 자동으로 하위 도메인을 만들도록 PHP를 설정하는 방법은 무엇입니까?
http://user.mywebsite.com과 같은 하위 도메인은 어떻게 만듭니 까? 어떻게 든 htaccess에 액세스해야합니까? 그것은 순수하게 PHP 코드를 사용하여 실제로 만들 수 있습니까 아니면 일부 외부 스크립트 - 서버 측 언어를 사용해야합니까?
응답 한 사람들에게 : 글쎄, 그럼, 만약 그들이 일종의 DNS 액세스를 제공하는지 내 호스팅에 물어야합니까 ??
해결법
-
==============================
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.이후의 기능을 와일드 카드 하위 도메인이라고합니다. 각 하위 도메인에 대해 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.나는 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.위에서 설명한 것처럼 와일드 카드 DNS를 설정합니다. 따라서 레코드는 * .yourname.com입니다.
위에서 설명한 것처럼 와일드 카드 DNS를 설정합니다. 따라서 레코드는 * .yourname.com입니다.
그런 다음 모든 하위 도메인은 실제로 같은 위치로 이동하지만 PHP는 각 하위 도메인을 다른 계정으로 취급합니다.
다음 코드를 사용합니다.
$url=$_SERVER["REQUEST_URI"]; $account=str_replace(".yourdomain.com","",$url);
이 코드는 $ account 변수를 하위 도메인과 동일하게 설정합니다. 그런 다음 자신의 계정을 기반으로 파일 및 기타 정보를 검색 할 수 있습니다.
이것은 아마 위에 나열된 방법만큼 효율적이지는 않지만 BIND 및 / 또는 제한된 .htaccess에 대한 액세스 권한이없는 경우이 방법이 작동해야합니다 (호스트가 사용자에 대해 와일드 카드를 설정하는 한).
우리는 실제로이 방법을 사용하여 다중 회사 전자 상거래 응용 프로그램의 고객 데이터베이스에 연결하지만 사용자를 위해 잘 작동 할 수도 있습니다.
-
==============================
5.Apache 대량 가상 호스팅을 사용할 수있는 경우 .htaccess 파일로 주위를 조롱하지 마십시오.
Apache 대량 가상 호스팅을 사용할 수있는 경우 .htaccess 파일로 주위를 조롱하지 마십시오.
문서에서 :
어떤면에서는 귀하의 질문과 반대입니다. 모든 '하위 도메인'은 사용자입니다. 사용자가 없으면 404가 표시됩니다.
유일한 단점은 환경 변수 DOCUMENT_ROOT가 사용 된 서브 디렉토리로 올바르게 설정되지 않았지만 htconfig의 기본 document_root입니다.
-
==============================
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.[잠재적으로] URL을 다시 작성할 수는 있지만 예 : DNS 설정을 제어해야 사용자를 추가 할 때 자체 서브 도메인이 생길 수 있습니다.
[잠재적으로] URL을 다시 작성할 수는 있지만 예 : DNS 설정을 제어해야 사용자를 추가 할 때 자체 서브 도메인이 생길 수 있습니다.
-
==============================
8.새 하위 도메인을 처리하기 위해 WWW 서버에서 구성을 변경하는 것 외에도 코드에서 DNS 레코드를 변경해야합니다. 따라서 자신의 BIND (또는 유사)를 실행하지 않는 한 네임 서버 제공 업체의 구성에 액세스하는 방법을 알아야합니다. API의 일종을 제공하지 않으면이 작업이 까다로울 수 있습니다.
새 하위 도메인을 처리하기 위해 WWW 서버에서 구성을 변경하는 것 외에도 코드에서 DNS 레코드를 변경해야합니다. 따라서 자신의 BIND (또는 유사)를 실행하지 않는 한 네임 서버 제공 업체의 구성에 액세스하는 방법을 알아야합니다. API의 일종을 제공하지 않으면이 작업이 까다로울 수 있습니다.
업데이트 : 예, 등록 기관에서 이름 서버 서비스도 제공하는지 확인합니다 (종종 그렇듯이). 나는 전에이 옵션을 살펴 본 적이 없지만 대부분의 소비자 등록자는 그렇지 않다고 생각합니다. GoDaddy API 및 GoDaddy DNS API에 대한 인터넷 검색을 수행했지만 아무것도 설정할 수 없었기 때문에 최상의 옵션은 공급자의 온라인 도움말을 확인하는 것이고 질문에 대답하지 않으면 보류 그들의 지원 직원.
-
==============================
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.서버가 와일드 카드 하위 도메인을 허용하도록 구성된 경우 .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.CloudFlare (무료)를 사용하는 경우 API를 사용하여 DNS를 쉽게 관리 할 수 있다는 점을 추가하고 싶었습니다.
CloudFlare (무료)를 사용하는 경우 API를 사용하여 DNS를 쉽게 관리 할 수 있다는 점을 추가하고 싶었습니다.
from https://stackoverflow.com/questions/183928/how-to-let-php-to-create-subdomain-automatically-for-each-user by cc-by-sa and MIT license
'PHP' 카테고리의 다른 글
PDO에서 지속적 연결을 사용할 경우의 단점은 무엇입니까? (0) | 2018.09.12 |
---|---|
PHP 스크립트를 독립 실행 형 Windows 실행 파일로 변환 (0) | 2018.09.12 |
PHP 7.2에서 Mcrypt 제거 준비 (0) | 2018.09.11 |
PHP 평등 (== double equals)과 ID (=== triple equals) 비교 연산자는 어떻게 다른가요? (0) | 2018.09.11 |
하이픈으로 연결된 이름을 가진 SimpleXML 노드 읽기 (0) | 2018.09.11 |