In short: It is possible to hide what language you are using on the back-end. Trivial example: consider a "Hello World" page; it'd be extremely difficult to figure out what framework / language was being used on the back-end (assuming the basic stuff like session cookies are manually set or not in use).
However, the point of frameworks is to save you having to re-implement functionality, and to make you work in a standardised way. Almost all frameworks have their specific little tell-tales which will give them away, if you look close enough. As others have pointed out, it is possible to try to hide these, by using configuration or re-implementing various standard features. Nevertheless, I'd argue that for large sites, it'd be extremely difficult to completely hide everything, and even if you accomplished that, you'd be using very little of your framework.
In summary, I'd say it's almost always possible to get a very good idea of what's being used underneath (with some careful examination and prodding). Hiding the framework used is possible, but quickly becomes infeasible for large sites.
The previous answers have some good examples of various tell-tales that frameworks and languages have. I'd like to add that various view engines have specific whitespace-related behaviour which can be used to identify them. The Razor engine used in MVC3+ has some fairly specific quirks which could be used to identify it, or at least, narrow down the list of suspects (again, you can side-step it, but then, are you using it?).
.php
to a CGI-Script written in C or a Servlet written in Java.