I am looking to create a system which on signup will create a subdomain on my website for the users account area.
e.g. johndoe.website.com
I think it would
FIrst you have to create the DNS settings using your server DNS editor.
Create A
record in DNS settings with host *
wild card in server ip address.
* 1400 IN A ip_address
Create once again a A
record in DNS settings with host @
or domain_name.tld
in server ip address. tld means top level domains or the extension of the domains such as .com, .org, etc....
@ 1400 IN A ip_address
or
domain_name.tld 1400 IN A ip_address
Create CNAME
record like:
www 1400 IN A domainname.tld
*
wildcard like *.domain.tld
Create htaccess in your subdomain directory of *.domain.tld
and put this code :
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteRule ^([aA-zZ0-9]+)$ index.php?data=$1
RewriteCond %{HTTP_HOST} ^([aA-zZ0-9]+)\.([aA-zZ0-9-]+)\.([aA-zZ]+)
RewriteRule ([aA-zZ0-9]+) index.php?data=%1
Test your first wildcard subdomain like example.domainname.tld
If you are not interest to pass the data as parameter using the htaccess, you can also get the data by using the following coding:
define("SUBDOMAIN_PARENT","domainname.tld");
class getData
{
function __construct()
{
$this->data="";
$http_host=$_SERVER['HTTP_HOST'];
$subdom_data= str_replace(SUBDOMAIN_PARENT,"",$http_host);
$expl_subdom_data=explode(".",$subdom_data);
$expl_subdom_data=array_filter($expl_subdom_data);
if($expl_subdom_data!=NULL)
{
$this->data=end($expl_subdom_data);
}
}
}
$GLOBALS['get_data']=new getData();
and use your global variable at any place like global $get_data
.
echo $get_data->data; //example
(note: This class mainly used for get the exact subdomainname from http_host
. because some extra names combined before your subdomain is also applicable like www.example.domainname.tld
. This return $_GET['data']='wwww'
So my suggestion is to use the $_SERVER['http_host']
for get the exact values instead of using the $_SERVER['query_string']
or passed htaccess parameters in your index page)
6.Speed up the execution of this wildcard subdomains use N seconds in TTL - DNS SETTINGS.
7.Check the subdomain after your given ttl time (600 - 10 minutes) like => http://abc.domain.tld
(note: wildcard subdomains not override the existed subdomains. Because First priority always for your existed subdomains)