There are two main strategies for handling multiple "applications" on the web:
- subdomains (e.g. wiki.example.org, blog.example.org, admin.example.org, api.example.org/v1)
- subdirs (e.g. example.org/wiki, example.org/blog, example.org/admin, example.org/api/v1)
What are the differences (advantages and disadvantages) of these two solution when dealing with web programming (e.g. in terms of code organization, browsers security models, javascript etc).
Edit: CW as there's a correct answer, but it's very broad.
Besides the fact that from a security standpoint it is a bit easier to isolate an app within a subdomain, I will just comment on what I think is the biggest difference between the two.
Pro's for subdomains:
- You can isolate configuration (for for example apache) per-domain.
- It will be easier to migrate parts of your application to other machines. Sub-directories won't really give you this flexibility.
- Instead of having to use a $baseUri variable in every html template, you can just assume the root of the app is always /.
Cons:
- It will be much more annoying to quickly setup staging or temporary development environments. For every 'app' you will now need DNS of hosts-file entries and webserver configuration. With subdirectories you could drop the app in a directory, and go!
- If you do ever have the requirement to deploy your application on a different system where using / is because of some odd policy not possible, some rewriting might be in order.
My advice:
Make sure you can always do both, which will give you the best of both worlds. Every part of your app should have a configurable base uri that is always respected. As long as you make sure you can always go both ways, then who cares what you do? it's just a url and it can always be changed.