| More

Wondering how blogger website gives you a subdomain from the blogspot.com domain based on  your username of your choice? Well, the concept for this tutorial is somewhat related with it on setting up unlimited subdomains. I’m not sure how do they do it because it could be done by any script, hardcoded or not, thru static or dynamic way via database, many possibilities, and one possible way is thru URL rewriting via Apache’s mod_rewrite.

Requirements of this setup:

a. Apache 2.x or later
mod_rewrite module should be enable.  To check if it’s enabled you should see this line on your httpd.conf

LoadModule rewrite_module modules/mod_rewrite.so

b. BIND 9.x or later
-Setting up the DNS Server is not part of this tutorial, it will be discussed on another topic.

Anyway to create automatic subdomains, these are the steps.

1. Configure your DNS server to use the wildcard (*) and points to your IP address.
Assuming you already setup the zone of your domain on named.conf , something like:


zone “freelinuxtutorials.com” {
type master;
file “/var/named/freelinuxtutorials.com.db”;


$TTL 86400
@   IN  SOA freelinuxtutorials.com. root.freelinuxtutorials.com. (
; dmn [flt.com] timestamp entry BEGIN.
; dmn [flt.com] timestamp entry END.
1D )
IN      NS      ns.freelinuxtutorials.com.
IN      NS      ns2.freelinuxtutorials.com.

freelinuxtutorials.com. A
ns      IN  A
ns2      IN  A
*               IN      A
; sub [{SUB_NAME}] entry BEGIN.
; sub [{SUB_NAME}] entry END.

As you can see above, is pointed to *. Meaning if you ping any subdomains (existing or non-existing) of freelinuxtutorials.com, it will all points to the same IP address

2. Configure your Apache
-To not really messed up your existing httpd config, is it better to create a new config and include it. Something like


Include conf.d/flt/*.conf

Create your virtualhost for your domain and add this rewrite rules on it.

#vi /etc/httpd/conf.d/flt/flt.conf

DocumentRoot “/var/www/html/flt/subdomains”
ServerName freelinuxtutorials.com
ServerAlias *.freelinuxtutorials.com
<Directory /var/www/html/flt/subdomains>
Options  Includes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all

#Rewrite Starts*
RewriteEngine on
RewriteCond %{HTTP_HOST} !^(www|m|secure|admin).* [NC]
RewriteCond %{HTTP_HOST} ^([^\.]+)\.freelinuxtutorials\.com
RewriteCond /var/www/html/flt/subdomains/%1 -d
RewriteRule ^(.*) /%1/$1 [L]


*Explanation (I’ll try to explain it as easy as I can)

1.RewriteEngine on = tells to enable Rewrite, off to disable it
2. It means only matches URLs that don’t start with www,m,secure or admin subdomains. This is important so it will not redirect to a particular directory e.g. m.freelinuxtutorials.com to /var/www/html/flt/subdomains/m/
3. ^([^\.]+)\. ==> these are combination of regular expression syntax of mod_rewrite, meaning
^ – start of syntax
. any single character
(…) group section
+ is added to make sure there is at least one char that matches
To sum up, it denotes anything that does not have a period, example is “subdomain”
4.the -d is added to checked if that directory does not actually exist
5.  ^(.*) /%1/$1 ==> it will take the requested path and put into a backreference, rewrite it to point to that  directory

%1 = subdomain
$1 = path backreference, based on the Rewrite condition above
L = Last Rule

3. Restart or Reload Apache service (depends on your distro)
something like
#service httpd restart
or #/etc/init.d/apache2 restart

4. Testing
Create a subdirectory named “darwin” under /var/www/html/flt/subdomains

#mkdir -p /var/www/html/flt/subdomains/darwin
#cd /var/www/html/flt/subdomains/darwin

Create a sample php file
#vi index.php


Save and Exit

Access on your browser http://darwin.freelinuxtutorials.com, this should appear:


That’s it. The subfolder name created on that directory will be your subdomain and will point it to that directory path.


16 Responses to “Automatic unlimited subdomains via Apache mod_rewrite”

  1. Akbari Divya

    on August 14 2010

    Thanks for helping me.
    This is working

  2. admin

    on August 25 2010

    @akbari, no problem. thanks for dropping by

  3. Mike Priest

    on June 1 2011

    Great post, well detailed.

    Do you have a link to the DNS configutation?
    Im having trouble trying to setup mydomain.com -> using localhost environment.

    Im using Ubuntu in VMWare.

  4. Noel

    on January 24 2012

    Very helpful information, thank you – I managed to get Apache configured correctly in a matter of minutes based on your advice. Our hosting provider allows us to edit our server’s DNS record directly (using their own control panel) so this can also save some time.

  5. Thomas R.

    on February 9 2012


    great solution!

    But I have one small problem with this: On my server doesn`t work if the name of subdomain is same as folder in root directory of unix, for example dev.domain.xx etc.domain.xx etc.
    I don`t know why, can you help?



  6. admin

    on February 10 2012

    Hi Thomas, thanks for dropping by. Bind DNS should work on any flavors of unix/linux. Can post the error you are getting if there’s any or can pls. elaborate more details. thanks.

  7. admin

    on February 10 2012

    @Noel, no problem, my pleasure. Thanks.

  8. Https://ferrann.com/blog/shampoo-matizador/

    on October 24 2018


    automatic unlimited subdomains via Apache mod_rewrite | Free Linux Tutorials

  9. shampoo sin sal

    on October 24 2018

    shampoo sin sal

    automatic unlimited subdomains via Apache mod_rewrite | Free Linux Tutorials

  10. Tintes de cabello combinados

    on October 24 2018


    automatic unlimited subdomains via Apache mod_rewrite | Free Linux Tutorials

  11. https://dailyuploads.net/1u57l2jv3xqk

    on October 27 2018

    If some one desires expert view about blogging afterward i advise
    him/her to go to see this web site, Keep up the nice

  12. Exani ll

    on October 28 2018


    automatic unlimited subdomains via Apache mod_rewrite | Free Linux Tutorials

  13. Shampoo sin sulfato

    on October 29 2018


    automatic unlimited subdomains via Apache mod_rewrite | Free Linux Tutorials

  14. Decolorante para pelo

    on November 7 2018


    automatic unlimited subdomains via Apache mod_rewrite | Free Linux Tutorials

  15. Kerastase

    on November 9 2018


    automatic unlimited subdomains via Apache mod_rewrite | Free Linux Tutorials

  16. Https://creativo.studio/copywriter-creacion-de-contenidos/

    on November 16 2018


    automatic unlimited subdomains via Apache mod_rewrite | Free Linux Tutorials

Comment RSS · TrackBack URI

Leave a comment

Name: (Required)

E-mail: (Required)




About FLT

This site is dedicated to everyone who likes to learn and explore the beautiful world of Linux. If you have comments and suggestions, please feel free to email at freelinuxtutorials@gmail.com. I am happy to serve and share things esp. that is free and enjoyable as Linux.