I'm looking for best practices and good ideas rather than a proper solution.

*scenario*: I work in a web agency and thus we are plenty of websites from several customers. They're built upon a cms we made, so websites are quite identical for the 90% of code. However, remaining 10% struggles me and my team as it involves not only the presentation layer but behavioral logics too (ex: a website1 requires simply user/pass registration while website2 needs more data, facebook connector, etc. But this is a very easy example). 

Making *ad hoc* development for our customers is becoming painful as keep each version aligned is getting really hard for us

What I really dream to have is an extendible website that works by itself, but in which I can override a part. This behavior should sound like "look for the specific part, if it doesn't exists get the base one". The parts could be a method, a class, a page, a control, a static file.

example:  

Suppose I want website2 to have an own login component, let's so imagine that we have a situation like:

```
/website_base
  |_ login.aspx

/website1

/website2
  |_ login.aspx

```

So, if I ask for www.website1.com I'll get /website\_base/login.aspx, but if I ask for www.website2.com I'll get /website2/login.aspx

Any idea?

Thanks

PS: we work with asp.net 3.5 framework.