Je n'ai pas Apache pratique pour tester, mais une combinaison de ces règles devraient faire ce que vous voulez:
RewriteEngine on
RewriteMap lower int:tolower
RewriteCond ${lower:%{REQUEST_URI}} -U
RewriteRule [A-Z] ${lower:%{REQUEST_URI}} [R=302,L]
- Une carte minuscule pour convertir/QUELQUE CHOSE/quelque chose
- Une condition pour voir si le minuscule du REQUEST_URI existe (-U requête apache interne)
- la règle à faire en fait la réécriture
Je ne sais pas si le RewriteMap peut être appliqué dans une condition, ou s'il ne s'applique qu'à une règle. Ceux-ci sont basés sur experts exchange accepted answer et a small orange forum discussion.
Votre solution "idéale" n'est probablement pas possible à moins que vous ne puissiez énumérer toutes les pages valides sur votre site. Si vous n'avez que quelques pages valides, une combinaison de RewriteMap et d'un text map fera exactement ce dont vous avez besoin. S'il existe des centaines/milliers de pages, vous devrez peut-être écrire un script et utiliser la directive prg
.
Si vous ne pouvez pas identifier toutes les pages valides, vous devez essayer chaque variante au cas où. Considérez votre URL comme une chaîne binaire, avec 0 pour les minuscules et 1 pour les majuscules. Juste à partir de votre exemple simple, vous devrez tester 2^17 variations, 128k pages.
Je préfère utiliser un 301 plutôt qu'un 302. – Gumbo