Create Dynamic Subdomains using PHP and Htaccess


Tech / 9lessons 371 Views 0

Dynamic subdomains like Google Blogger and, I know most of the people are looking for better solution. Today I want to explain how to achieve this using .htaccess with PHP. I especially love to write .htaccess file, using this you can easily host multiple domains in single server. This dynamic subdomain system is the base for cloud services, soon I will come with new tutorial. I hope this post will solve your problem, please take a look this live demo.

Create Dynamic Subdomains using PHP and Htaccess

Download Script     Live Demo

Step 1
Go to your domain DNS(Domain Name Settings), click add zone record.

Create Dynamic Subdomains A ZONE settings

Step 2
You need to create a custom A record to serve all your subdomains. Select A record, HOST * POINTS TO: Your ID Address(Eg:

Create Dynamic Subdomains A ZONE settings add

Step 3
Repeat the same for HOST @, here is the listed A records.

Create Dynamic Subdomains A record settings

Step 4
Now add CNAME record, HOST www POINTS TO @ this refers to your IP address.

Create Dynamic Subdomains CNAME ZONE settings add

Step 5
CNAME list should be in following way.

Create Dynamic Subdomains CNAME record settings

Step 6
Save all of your domain DNS settings.

Working with Hosting Server
We can achieve dynamic subdomains system with .htaccess URL redirection configuration file, here I have a project directory called yourwebsite_folder

Create Dynamic Subdomains .htaccess settings

(1) Root .htaccess
This file is redirection to for home page use. All of the subdomain redirection to yourwebsite_folder
RewriteEngine On

RewriteCond %{HTTP_HOST} ^
RewriteRule (.*)$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^yourwebsite\.com $
RewriteCond %{REQUEST_URI} !^/yourwebsite_folder/
RewriteRule (.*) /yourwebsite_folder/$1

RewriteCond %{HTTP_HOST} ^(^.*)\
RewriteCond %{REQUEST_URI} !^/yourwebsite_folder/
RewriteRule (.*) /yourwebsite_folder/$1

(2) Inside Folder .htaccess
This file is rewriting the subdomain urls.

Options +FollowSymLinks
RewriteEngine On

RewriteBase /

RewriteRule ^([aA-zZ])$ index.php?siteName=$1
RewriteCond %{HTTP_HOST} ^(^.*)\
RewriteRule (.*) index.php?siteName=%1

More .htaccess tips: Htaccess File Tutorial and Tips.

This file contains simple PHP code, using regular expressions validating the subdomain value.

if($_GET['siteName'] )
$siteNameCheck = preg_match('~^[A-Za-z0-9_]{3,20}$~i', $sitePostName);
     //Do something. Eg: Connect database and validate the siteName.
//HTML Code
<!DOCTYPE html>
<title>Project Title</title>
<?php if($siteNameCheck) { ?>
//Home Page
<?php } else { ?>
//Redirect to Subdomain Page.
<?php } ?>

No Subdomain Folder
If you are using root directory(htdocs/public_html) as a project directory, use this following .htaccess file.
Options +FollowSymLinks
RewriteEngine On

RewriteBase /

RewriteCond %{HTTP_HOST} ^
RewriteRule (.*)$1 [R=301,L]

RewriteRule ^([aA-zZ])$ index.php?siteName=$1
RewriteCond %{HTTP_HOST} ^(^.*)\
RewriteRule (.*) index.php?siteName=%1

Was this article helpful?
Thanks! Your feedback helps us to improve