Subdomain vs. Subdirectory

 

Better blog.mydomain.com or mydomain.com/blog? Good question! If got asked this question again via Twitter on the weekend so therefore I decide to share my experiences:

 

Choose a subdomain, if….

- You plan to offer “different services” which are “logical separated” on one domain

- You are able to influence the subdomains without much effort

Example:

Blog.mydomain.com

Shop.mydomain.com

Forum.mydomain.com

 

Why?

If you choose to use subdirectories it is much more difficult to age these services. It is easier to create a CNAME entry and with that for example blog.mydomain.com leads to Tumblr Blog and not to a machine. Also it is possible to run the different sites on several machines (without Loadbalancer and so on).

 

Choose a subdirectory, if….

- You aren’t able to influent the subdomains (for example the whole applications-stack is installed at the customer but you don’t want the admin to unnecessary implement DNS-Settings

- The Application-Intern or the site is too small to create an own WebApp (like an Impressum for example)

 

What does Google think about this?

Here is a statement from a Google employee on YouTube.

 

And what about Stackoverflow?

I really like this answer:

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.

 

But aren’t you using code-inside.de/blog yourself?

Well – when I created this blog some years ago I just didn’t know it better. The problem with a change would be that the old Links still have to work and I’m not sure how Google would take the news.

Therefore: think about this before you start Zwinkerndes Smiley

If you enjoyed this post, please consider leaving a comment or subscribing to the RSS feed to have future articles delivered to your feed reader.

About the author

Written by

Learn more about our team.

Recent Posts

  • HowTo: make out Retweet-counter in a random URL

      Twitter offers some interesting functions with the integration of the twitter button – every user can see how often the website has been retweeted and he can do the same with just one click. But of course the whole thing has his price: - The integration of the Twitter JavaScript makes the whole data […]

  • Time-controlled Azure WebJobs – Azure as easy as it get‘s

        While still in development the Azure WebJob SDK offers some cool features for procession and supply of information. A good example is the sample that observes the Azure Queue and processes an item as soon as it spots one.   Scenario: time-controlled activities – without queue and so on My scenario was quite […]

  • image2021-570x194_thumb.png
    HowTo: Create RSS Feeds with ASP.NET MVC

    I’ve already written about how to consume RSS or Atom Feeds with the SyndicationFeed (in German, sry) but todays post is about how to create or publish an own feed. Beside the age of the feed standard and the much defamation from Facebook, Twitter and Google on RSS/Atom I consider this easy to consume API […]

  • image1997-311x194_thumb.png
    How to access an Azure Website with the local IIS Manager

    Since the end of February it is possible to access an Azure Website with the IIS Manager. Although the Azure Management site offers some information there are more details visible at the IIS Manager. For the connection you will need an IIS Manager and the IIS Manager for Remote Administration Extension. It’s also possible to […]

  • image1929-570x143_thumb.png
    Create and validate own Json-Web-Tokens (JWTs)

    If you are interested in web authentication you probably have heard about JSON Web tokens (JWT). What is a JWT? Maybe I’m not using the correct security termination but however: JWTs are used to exchange claims between two systems. For example: You want to log on to a service (like Facebook, Twitter, etc.) and want […]

Support us