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.