Reason for my vote of 2 If you have to implement a maintenance mode page, then you are likely deploying an enterprise level site. This is not an acceptable way of doing this on an enterprise level site because it will require you to alter the code on the site in order to implement it. That makes this route a bad idea.
System.Uri class (http://msdn.microsoft.com/en-us/library/system.uri.aspx). I'm guessing that at what point you have to decide whether or not you are going to allow or disallow a request based on the URI
Experiment with something like that. Things to note are that: If you check to see if the host equals "www.google.co.uk" then this would still mean that other subdomains (e.g. "www3.google.co.uk") wouldnt be blocked. If you check to see if the host contains "google.co.uk" then you risk blocking others whose subdomain contains someone elses url, for example "google.co.uk.MyDomain.co.uk" which is still a valid subdomain under the "MyDomain.co.uk" domain. And of course, this only blocks requests that happen to go through this check. I.e. it's not a computer-wide check. Another thing to note is that the EndsWith() check you have made, will also block "notgoogle.co.uk".