I\'d like for any url that doesn\'t hit an existing file, to do a lookup on the other possible cases and see if those files exist, and if so, 302 to them.
If that\'s
CheckSpelling on
Matches files and directories. See the documentation for details.
I don't have Apache handy to test, but some combination of these rules should do what you want:
RewriteEngine on RewriteMap lower int:tolower RewriteCond ${lower:%{REQUEST_URI}} -U RewriteRule [A-Z] ${lower:%{REQUEST_URI}} [R=302,L]
I don't know if the RewriteMap can be applied in a condition, or if it only applies to a rule. These are based on experts exchange accepted answer and a small orange forum discussion.
Your "ideal" solution is probably not possible unless you can enumerate every valid page on your site. If you only have a few valid pages, a combination of RewriteMap and a text map will do exactly what you need. If there are hundreds / thousands of pages you may need to write a script and use the prg
directive.
If you can't identify every valid page, you would need to try every variant in case. Consider your URL as a binary string, with 0 for lowercase letter and 1 for uppercase. Just from your simple example you'd have to test 2^17 variations, 128k pages.
Look up the Apache module mod_negotiation. It does exactly what you want: http://httpd.apache.org/docs/2.0/mod/mod_negotiation.html#multiviews
You can also pipe all requests to a single PHP file and let the PHP file do the checking for you.