I beg your pardon. Case sensitive naming has been available on Unix servers since early on (pre Apache 1.0).
Unix and its nephew Linux are “case- sensitive OS’s”. Windows, including IIS (the third most used web server), are not case-sensitive.
The reason it’s still considered best practice to not mix cases for URI’s is constancy. The same reason we don’t put are shopping cart buried in the page’s footer or have our navigation midway down the page. It’s all about user experience. Users are used to websites being in lowercase. You mix cases in the URL and people will start getting 404’s.
Most pages on the Internet are going to be in all lowercase. When you create web pages, it’s best to always save all files as lowercase (including the file extension).
There’s a lot that you “can” do with URIs and URLs names.
There are also lots that you “shouldn’t” do with these names.
So let’s be clear on this. The domain name portion of the URL, left and including the top level name(.com, .org, .edu, .net), by specifications is case insensitive. That means that EXAMPLE.COM, Example.com, and example.com are all treated the same and translate to example.com.
The remaining part of the URL the path/filename “can” technically contain most characters you want , including spaces.
This is a list of the reserved characters(not including space) that has a special meaning when interpreting the URL/URI. If you want to use them, you will need to % encode them. It best practice not to use reserved them as part of the path/file name.
: / ? # [ ] @ ! $ & ‘ ( ) * + , ; =
These character are considered Unsafe (including space). If you use them you will need to % encode them.
“ < > % { } | \ ^ ` [ ] ~ #
You can also easily configure Apache to be case-insensitive. This would treat the entire URL path just like the domain name. ABC, Abc, and abc would be the same.
Since most of us don’t have access to the httpd.ini file you can do that in the htaccess file:
RewriteEngine On
CheckSpelling On
CheckCaseOnly On
This relies on the CheckSpelling Module being loaded. Most of the time, it is. If that doesn’t work, you can try this:
RewriteMap tolowercase int:tolower
RewriteRule ^(.*)$ ${tolowercase:$1}
Apache should automatically redirect all your URLs to lowercase ones.