Upper and lower case in URLs (case sensitivity vs case insensitivity)

Windows is different - does it matter?

[ List of other entries | oyoy.eu main page ]
 

Windows case insensitivity in file names

The operating system Windows (and all MS-DOS versions) has been case insensitive from the start. This makes it easy for the user - there's no need to remember which case-combination you used to write a file, you can always find it. The case insensitivity in the file system is retained for webservers based on the same file system (eg IIS). This also makes it easier for users to access content on Windows servers.

The Internet (not based on Windows)

The internet however is not based on Windows operating systems - it was built on operating systems which are case sensitive from the start (eg Unix, Linux). By definition, a URL is case sensitive. URLs like "/mypage.php" and "Mypage.php" are technically different URLs and could return different content.

The problem with case-insensitive URLs

To a user it does not really matter (in general) if a URL is in upper or lower case. However, search engines are generally more strict (and standards compliant): if they find links to different versions of the same URL, they will generally crawl and index both of them. They will recognize that the content is the same and generally filter one of them out of the search results - in the end you will only see on of them. However, the value is still assigned to both of the URLs -- value which could be concentrated on a single URL is now split over two of them and worst of all: the value from one of them is just filtered from the search results. If you check the PR (pagerank) for the two URLs you will notice that they are different.

Solving the URL-case problem on IIS

The simplest way to solve this problem is to make sure that your website links to it's own pages with the same URL (same case) every time. Make sure all of your internal links are correct and the external ones will not cause too much of a problem. You can test your URLs by using a tool like the GSiteCrawler or Xenu. If you use the GSiteCrawler, make sure you set it to "case-sensitive" (by default it will crawl with case-insensitive URLs on Windows servers). Check the found URLs for duplicates (differences only in the case of the URLs). Make sure you get all links changed -- and recrawl again (from a new project).

Going a step further you could add conditional 301-redirects from all your URLs if the URL case is incorrect. However, this requires that you have a bit of knowledge - and depending on your website, a lot of work (especially if you can't just add code to all pages from a central place). Unless you can easily add the conditional redirects in one place, it generally is not woth the extra effort to add those redirects.