Should my URLs be lowercase?
Should I go out of my way to force the framework to change everything to lower case?
No, that's not necessary. Windows operating systems are case insensitive, including their server OS's and framework applications. Linux/Unix operating systems are however case sensitive.
Internet-based applications (e.g., browsers) should normalize URL's, as covered in section 6 of RFC 3986:
One of the most common operations on URIs is simple comparison: determining whether two URIs are equivalent without using the URIs to access their respective resource(s). A comparison is performed every time a response cache is accessed, a browser checks its history to color a link, or an XML parser processes tags within a namespace. Extensive normalization prior to comparison of URIs is often used by spiders and indexing engines to prune a search space or to reduce duplication of request actions and response storage.
Since you'll be using a Windows server no doubt, requested URLs and URIs will be returned to client applications just fine.
In regards to search engines, as stated in the RFC above, and in your Wikipedia link on URL Normalization:
Search engines employ URL normalization in order to assign importance to web pages and to reduce indexing of duplicate pages.
And as sources like this report on the subject:
More recently, Google began to better understand that /page1.html and /Page1.html were just two instances of the same content.
Why did Microsoft choose to design their framework like this if everybody is telling me to use lowercase?
It's compatible with their operating system, and technically not incorrect according to the RFC's. They also have their own way of doing things, which keeps webmasters guessing :-)
I don't know that you should change it but you should make sure to be consistent.
I looked into this a couple years back and Google's standard was that case before the TLD doesn't matter but after the TLD does.
At the time I was working on a defunct site called BusinessForPhotographers.com
; apparently that is consistently treated as case insensitive.
After the .com
is another matter. Google views /Great-Article
as distinct from /great-article
, even if you server routes them to the same place.
This might impact canonicalization and duplicate content issues. I think the safest method would be to force a 301 redirect to the correct version.
While this may seem pointless think about a service like YouTube, is /A1B2C3
the same URL as /a1b2c3
?
Not in Google's eyes.
URI paths are case-sensitive (if not defined otherwise). See the URI standard STD 66, section 6.2.2.1. Case Normalization:
The other generic syntax components are assumed to be case-sensitive unless specifically defined otherwise by the scheme
If uppercase letters in HTTP URI paths would be a problem for some users, the Wikipedia would be broken for them. These two HTTP URIs (only differing in lowercase o
vs. uppercase O
) lead to different pages:
- http://en.wikipedia.org/wiki/Stack_Overflow
- http://en.wikipedia.org/wiki/Stack_overflow
So no, you don’t have to change your URIs.
However, if possible (if you don’t make use of the case, as Wikipedia does), it would be good practice to allow all case variants and 301 redirect to a canonical variant.