Ответ 1
CheckSpelling on
Соответствует файлам и каталогам. Подробнее см. В документации.
Я бы хотел, чтобы какой-либо URL-адрес не попал в существующий файл, чтобы просмотреть другие возможные случаи и посмотреть, существуют ли эти файлы, и если да, то 302 им.
Если это невозможно, то я согласен с этими компромиссами:
Например http://example.com/CoOl/PaTH/CaMELcaSE следует перенаправить на http://example.com/CoOl/PaTH/CaMELcaSE (предполагая, что последнее существует).
но, конечно, полное решение гораздо полезнее для меня и других
CheckSpelling on
Соответствует файлам и каталогам. Подробнее см. В документации.
У меня нет Apache для тестирования, но некоторая комбинация этих правил должна делать то, что вы хотите:
RewriteEngine on RewriteMap lower int:tolower RewriteCond ${lower:%{REQUEST_URI}} -U RewriteRule [A-Z] ${lower:%{REQUEST_URI}} [R=302,L]
Я не знаю, может ли RewriteMap применяться в состоянии или применяется только к правилу. Они основаны на эксперты обменивают принятый ответ и небольшая оранжевая дискуссия форума.
Ваше "идеальное" решение, вероятно, невозможно, если вы не можете перечислить все допустимые страницы вашего сайта. Если у вас есть только несколько действительных страниц, комбинация RewriteMap и текстовая карта будет делать именно то, что вам нужно. Если есть сотни/тысячи страниц, вам может понадобиться написать script и использовать директиву prg
.
Если вы не можете идентифицировать каждую действительную страницу, вам нужно попробовать каждый вариант в случае. Рассмотрите свой URL как двоичную строку, с 0 для строчной буквы и 1 для прописных. Просто с вашего простого примера вам придется протестировать 2 ^ 17 вариаций, 128 тыс. Страниц.
Посмотрите модуль mod_negotiation модуля Apache. Он делает именно то, что вы хотите: http://httpd.apache.org/docs/2.0/mod/mod_negotiation.html#multiviews
Вы также можете передать все запросы в один файл PHP и позволить PHP файлу проверять вас.