Converti in minuscolo in una regola mod_rewrite

Desidero che URL come server.com/foo non siano sensibili al maiuscolo / minuscolo. Ma server.com/foo riceve effettivamente mod_rewrite’d su server.com/somedir/foo

(Supponiamo che tutti i file in “somedir” siano in minuscolo.)

Quindi la domanda è, come realizzare un mod_rewrite come il seguente:

RewriteRule ^([^/]+)/?$ somedir/convert_to_lowercase($1) 

PS: Ecco un utile cheat mod_rewrite – http://dreev.es/modrewrite – sebbene non risponda a questa particolare domanda.

PPS: grazie a Bee e Ignacio per tutto l’aiuto con questo. Inoltre, ecco una domanda correlata: triggerszione RewriteMap

Innanzitutto, inserisci la seguente riga nella sezione del tuo file .conf. (Per me che vive in /etc/httpd/vhosts.d/00foo.conf .)

 RewriteMap lc int:tolower 

Puoi sostituire lc con qualsiasi nome tu voglia. Quindi riavvia apache, cosa che puoi fare con il sudo service httpd restart .

Infine, aggiungi questo nel tuo file .htaccess:

 RewriteRule ^/(.*)$ /${lc:$1} 
 RewriteMap tolower int:tolower RewriteRule ^([^/]+)/?$ somedir/${tolower:$1} 

Farei un reindirizzamento 301, NON una riscrittura URL, per scopi SEO:

 RewriteMap tolower int:tolower RewriteRule ^([^/]+)/?$ somedir/${tolower:$1} [R=301,L]