PHP Subdomain – Tạo subdomain bằng PHP – WildCard DNS

1 vấn đề hay gặp là ứng với mỗi user, muốn tạo một subdomain cho user đó, như kiểu các blog hay làm, ví dụ như: http://username.domain.com

1 giải pháp đơn giản là tạo domain ảo, bằng wildcard DNS.

Trong bài này, lấy demo control panel là Direct Admin,

1. Việc đầu tiên là tạo wildcard DNS: (cần account admin)

Trong Direct Admin, vào phần DNS Administrator,

DNS Administrator

DNS Administrator

Chọn domain cần tạo wildcard DNS

Chon domain

Chon domain

Gõ vào phần “A” record: “*” -> IP, Add

Add domain record

Add domain record

Ok, xong bước 1, bước này không cần quyền admin vẫn làm được.

Tới bước 2 thì phải cần quyền Admin hoặc được Admin xét quyền.

Vào Custom HTTPD Configurations

Custom HTTPD Configurations

Custom HTTPD Configurations

Chọn domain cần tạo wildcard DNS, rùi gõ vào câu này và dòng trên cùng của text area

ServerAlias *.|DOMAIN|

Gõ đúng y vậy, không phải thay |DOMAIN| bằng domain của mình, vì tự dộng Direct Admin thay.

Add server Alias

Add server Alias

Xong phần tạo wildcard DNS, đợi lát cho server reboot apache, name, … không thì mình tự reboot server lại.

Bây giờ thì mình gõ username.domain.com thì tự trỏ vào domain.com, vậy là wildcard DNS run ok.

Giờ tới phần 2, làm sao để khi gõ username.domain.com thì trỏ vào site của user đó, ví dụ là

username.domain.com -> domain.com/program.php?user=username

2. Rewrite wildcard DNS subdomain

Phần này chúng ta nhờ vào .htaccess, cấu trúc file .htaccess cũng khá đơn giản nên không phải chú thích gì kỹ,

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

#www is not a user subdomain
RewriteCond %{HTTP_HOST} ^blog.dangkhoi.info [NC,OR]
RewriteCond %{HTTP_HOST} ^dangkhoi.info [NC]
RewriteRule ^(.*) $1 [L]

#redirect wildcard subdomains
RewriteCond %{HTTP_HOST} ([^.]+)\.dangkhoi.info [NC]
RewriteRule ^$ /program.php?user=%1 [L]
</IfModule>
<IfModule !mod_rewrite.c>
ErrorDocument 404 /index.php
</IfModule>

Ok, xong,

Chúc may mắn, có gì thì comments lại nhen.

4 comments

  1. Thanks :)

  2. Thank, bài viết đơn giản nhưng rõ ràng. Mình sẽ làm thử trong forum của mình

    Lúc trước cũng có tham khảo qua vấn đề này nhưng rất khó hiểu.

    Còn lại trước khi tạo subdomain thế này. chúng ta cần set lại URL của các file js, css, images về URL tuyệt đối. ko chúng lại chạy loạn cả lên.

  3. bạn làm thử xem, có gì thì comment lại mình research cho nhé.
    set thêm base_url trong htaccess là / thì không cần set lại url bạn à

  4. Bạn cho mình hỏi trong cPanel thì add server Alias như thế nào?

Leave a Reply