Create Dynamic Subdomains using PHP and Htaccess
Wall Script
Follow Me:
Monday, March 14, 2016

Create Dynamic Subdomains using PHP and Htaccess

Dynamic subdomains like Google Blogger and Tumblr.com, 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: 106.21.252.71)

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 http://www.yourwebsite.com to http://yourwebsite.com for home page use. All of the subdomain redirection to yourwebsite_folder
RewriteEngine On

RewriteCond %{HTTP_HOST} ^www.yourwebsite.com
RewriteRule (.*) http://yourwebsite.com/$1 [R=301,L]

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

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

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

http://yourwebsite.com/index.php?siteName=9lessons
to
http://9lessons.yourwebsite.com
Options +FollowSymLinks
RewriteEngine On

RewriteBase /

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

More .htaccess tips: Htaccess File Tutorial and Tips.

index.php
This file contains simple PHP code, using regular expressions validating the subdomain value.
<?php
$siteName='';
if($_GET['siteName'] )
{
$sitePostName=$_GET['siteName'];
$siteNameCheck = preg_match('~^[A-Za-z0-9_]{3,20}$~i', $sitePostName);
   if($siteNameCheck)
   {
     //Do something. Eg: Connect database and validate the siteName.
   }
   else
  {
    header("Location: http://yourwebsite.com/404.php");
   }
}
?>
//HTML Code
<!DOCTYPE html>
<html>
<head>
<title>Project Title</title>
</head>
<body>
<?php if($siteNameCheck) { ?>
//Home Page
<?php } else { ?>
//Redirect to Subdomain Page.
<?php } ?>
</body>
</html>

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} ^www.yourwebsite.com
RewriteRule (.*) http://yourwebsite.com/$1 [R=301,L]

RewriteRule ^([aA-zZ])$ index.php?siteName=$1
RewriteCond %{HTTP_HOST} ^(^.*)\.yourwebsite.com
RewriteRule (.*) index.php?siteName=%1
Was this article helpful?
Thanks! Your feedback helps us to improve 9lessons.info


23 comments:

  1. This is just amazing, is it any way we can create same in digital ocean

    ReplyDelete
  2. Hi dude,
    I want to this like redirection file.
    for eg: wdcctest.com/index.php/WEWReafdfee-adfsd-sdfsdf

    this like redirect in same index page. can you send that htaccess file code

    ReplyDelete
  3. Hello,

    Please, did you mean we can use either of the methods above? Or, we still need to configure CNAME, A RECORD before .htaccess can work?

    Thanks

    ReplyDelete
    Replies
    1. You have to configure CNAME and A Record

      Delete
    2. Okay,
      What happens to original (static) subdomain?
      Thanks.

      Delete
  4. unable to create for "Www".
    I know the reason, but you can make it more pretty by adding a validation or popup message.
    Thanks
    Akshay Makadiya

    ReplyDelete
  5. Hello

    i have create the CNAME and A(Host) records but getting the : Internal Server Error

    Can you help..

    ReplyDelete
  6. Great tip thanks This is just amazing.

    ReplyDelete
  7. Nice article. Can you a post on dynamic subdomains with php and nginx.

    ReplyDelete
  8. still confuse can u tell more detail with video ?

    ReplyDelete
  9. hi Mr thammada this is not workin for gramam.today domain in godDDY

    ReplyDelete
  10. i use this for creat user profile rediect to subdomain but profile is my path not auto redirect to sub domain its work when direct open how i do this help me plz

    ReplyDelete
  11. hello, I was unable to create a custom A record for HOST @. it gives me an error message saying "That is not a valid zone name"

    ReplyDelete
  12. am trying to implement the dynamic subdomain on godaddy but it is not working. Example: signup.mysite.com. the signup is a folder in my root directory. Help from someone...

    ReplyDelete
  13. Hi, i followed your steps and done all those things. But i got "pageok" text with blank page. My hosting domain and server in GODADDY. Please help me. Thanks.

    ReplyDelete
    Replies
    1. Check your server .htaccess is working or not?

      Delete
  14. Can i need VPS/Dedicated ? or available on cPanel Reseller ??

    ReplyDelete

Make in India