Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 760
  • Last Modified:

How to setup virtual subdomains with just Mod_rewrite and .Htaccess (+500 bonus)

Hello and thank you for taking the time to read this question. Before I begin, as this question is  quite challenging i'm awarding an additional 500 bonus points to the person who can provide me a working .Htaccess file/code that achieves the desired result.

Let me begin.

Assume that website mydomain.com is hosted on a dedicated host with a static IP.
A wildcard domain entry has been added so that any subdomains are redirected to the domain name. For example: somesubdomain.mydomain.com/ --> redirects to mydomain.com/
Mydomain.com contains one index.html file in its root and is the default start page for the website.

What I want to achieve:

1. Any requests to subdomains must be redirected to my root domain path, however, the redirect process needs to be transparent to the users browser, thus the user must still see their original url they entered.

For example: user enters subx.mydomain.com, user is redirected transparently to mydomain.com/index.html, user is shown the same url as entered. subx.mydomain.com

Note that certain subdomains need to be excluded, for example www.

2. Should the user enter a non existent resource path, the user will be redirected to mydomain.com/index.html, again, this redirect needs to be transparent and the user shown the exact same url they entered.

For example: user enters www.mydomain.com/somedir1/somdir2/, user is transparently redirected to mydomain.com/index.html but still shown their original url www.mydomain.com/somedir1/somdir2/

Please feel free to ask questions should you require more information.

Best regards,

1 Solution
Assuming you're using Apache, Isn't this possible using a VirtualHost in the .conf file?
1) if you are using a wildcard, and have *.yourdomain.com in your ServerAlias in httpd.conf, then that will already work

2) you can add the directive:
ErrorDocument 404 /index.html
HOWEVER: the user will still get a 404 status code, along with your index.html content. depending on the browser, it may or may not display this html content (i believe IE only displays custom 404 html if the html content is over a specific size).
You can get around this by using index.php instead of index.html, and on the first line, add this:
<? header("HTTP/1.0 200 Ok") ?>
LoftbugAuthor Commented:
Hello Wranlon,

>> Assuming you're using Apache, Isn't this possible using a VirtualHost in the .conf file?
Yes, works well but not all hosts support making changes to the httpd.conf so we need to go with using .htaccess and Mod_rewrite.

Hello Netmunky,
>> ErrorDocument 404 /index.html HOWEVER: the user will still get a 404 status
Your idea makes sense but i'd rather not go this route. I've looked into what can be done with Mod_rewrite and it offers good extendability and portability.


LoftbugAuthor Commented:
I have found the solution by experimenting with mod_rewrite.

.Htaccess file placed in document root
 Options +Indexes
 Options +FollowSymlinks
 RewriteEngine On
 RewriteCond %{HTTP_HOST} ^(.+)\.domain\.tld$ [NC]
 RewriteRule ^$ /index.php?page=page2 [QSA,L]

Thank you for your comments. I'm going to request that this Question is closed.

PAQed with points refunded (500)

EE Admin

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Tackle projects and never again get stuck behind a technical roadblock.
Join Now