I'm using a case-sensitive web application to serve a few URLs that will be printed, so we expect UsErs to type them with inexact case. How do I tell mod_rewrite
to redirect to the correct case URL as in [NC]
without also redirecting on the case-exact URL and creating a loop?
Asked
Active
Viewed 9,399 times
0

joeforker
- 2,399
- 4
- 26
- 35
3 Answers
3
This depends on a few things in your web application, but you could:
- Use mod_speling to force the correct capitalization of filenames and directories. This requires "real" filenames.
- Use RewriteMap to rewrite the url (as seen here):
In .htaccess:
RewriteEngine on
RewriteBase /
RewriteMap insensitive tolower:
RewriteRule ^[\/]*(.*)$ /${insensitive:$1} [R,L]

Dave Drager
- 8,375
- 29
- 45
1
First off, if you can use mod_speling that's easiest, but that requires actual files, not stuff hiding inside an application somehow.
Simply set a condition so the rewriterule doesn't happen if the request is capitalized properly, like so:
RewriteCond %{REQUEST_URI} !^/Your/File$
RewriteRule ^/your/file$ /Your/File [NC,R]

freiheit
- 14,544
- 1
- 47
- 69
0
Mount a Samba share to /var/www and consider the Samba-share folder your wwwroot ;-))

Quandary
- 1,024
- 4
- 19
- 36