Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is there a way to always require or force the 'www' subdomain on a site?

I want to prevent users from going to say example.com and only go to www.example.com, we are using IIS 6. So say they go to example.com it could tack on the www.example.com, etc.

Is this a setting somewhere or will I have to code it to check for the subdomain when they land and redirect accordingly?

EDIT: I know the best way is to move away from the www prefix but for whatever reason if the user launches a course (this is an LMS) without the www in the URL the tracking does not work for the .asmx file, that is why I am trying to force the 'www' because if some people don't have it then they wonder why the tracking does not work.

like image 322
MetaGuru Avatar asked Mar 02 '23 00:03

MetaGuru


2 Answers

If you're using ASP.NET create an HttpModule, handle the BeginRequest event and add this code inside your handler:

HttpApplication application = (HttpApplication)source;
HttpContext context = application.Context;

if (context.Request.Url.Host == "example.com")
{
context.Response.Clear();
context.Response.Status = "301 Moved Permanently";
context.Response.AddHeader("Location", "http://www.example.com" + context.Request.RawUrl);
}

Note that I didn't use Response.Redirect(), this is done for the sake of SEO, as Response.Redirect() always returns status 302 which means the object was moved temporarily while status 301 means the object was moved permanently, this will keep the PageRank of your pages from being divided between the www and the non-www versions (if search engine crawlers can access the page using both the www and the non-www URLs, they will divide your PageRank between the two, hence is the use of 301 which search engine crawlers understand and will keep your PageRank to only the www version of your site).

like image 59
Waleed Eissa Avatar answered Apr 14 '23 16:04

Waleed Eissa


As both records already point to the correct server...

...you could simply set up a new website in IIS (server version needed) and have it respond only to example.com (the host header setting) and have it redirect to the wanted url (check redirect to url in Home Directory tab and enter www.example.com). The original site should then handle it (you could set it's host header to answer to www.example.com to be more specific).

If you can't do that on the web server, your publishing firewall should be able to, or you might consider replacing it. Your DNS provider might also provide (pun not intended) a redirect service (doing basically the same thing as above for you I guess).

like image 30
Oskar Duveborn Avatar answered Apr 14 '23 16:04

Oskar Duveborn