How to offer custom sub-domains for SAAS Application
Question
How do i offer Basecamp/SAAS App like sub domains to clients?
For example, my website URL is http://www.example.com
whenever the user signup i want to offer them url like http://company.example.com
which should load files/contents from /app
directory of the website.
And later i want them to choose their own domain/sub-domain via CNAME, so that they can have URL like http://clients.mywebsite.com
I want to do this in Pure PHP and .HTACCESS and offcourse everything happens automatically.
And i want to keep URL structure same.., that is http://company.example.com/login
, http://company.example.com/accounts
, http://company.example.com/files/style.css
though these files are located inside /app
directory i want them to be accessed like this.
I can handle all PHP functions, i need help with .htaccess codes and how to go about CNAME.
Solution
Make sure DNS resolves all subdomains by including following in domain's zone:
*.example.com. 14400 IN A HereBeIP
Next, configure web server to recognize all incoming requests, for Apache, you need to add following to VirtualHost:
ServerAlias *.example.com
That's it. The only thing remaining is the logic in the code, you need to check host name to see whether a request was done to example.com or foo.example.com.
Updated with more details.
So, assuming your files are in /path/to/files/app
, you need to configure virtual host like this:
<VirtualHost>
SeverName example.com
ServerAlias *.example.com
DocumentRoot /path/to/files/app
# plus what else is needed
</VirtualHost>
This way all requests will resolve to /app
directory. To test it, apply above DNS configuration or simply add the domains you want tested into your hosts
file, /etc/hosts
on Linux or c:\Windows\System32\drivers\etc\hosts
on Windows.