Ошибка Apache mod_speling без учета регистра

Я хочу иметь нечувствительные к регистру URL-адреса, используя модуль Apache mod_speling, но это создает нежелательные списки "нескольких параметров", в то время как документация Apache говорит

При установке эта директива ограничивает действие орфографической коррекции на более низкие/верхние изменения. Другие потенциальные поправки не выполняются.

Я тестирую это на новой установке Apache 2.2.16 Unix, но я все еще сталкиваюсь с теми же проблемами, что и в 2008 году.

Это неожиданное (и не требуемое) поведение, когда Apache перечисляет несколько "множественных вариантов" (код состояния 300), когда включена директива checkCaseOnly!

У меня это в моем httpd.conf:

CheckSpelling on
CheckCaseOnly on

Первая директива использовать mod_speling, вторую директиву ограничивать только коррекции случая

Что я делаю неправильно?

Ответы

Ответ 1

Чтобы включить mod_speling (либо по местоположению, либо по VirtualHost), используйте директиву:

CheckSpelling On

Если вы хотите использовать нечувствительность к регистру:

CheckCaseOnly On

Ответ 2

В Ubuntu 12.04 LTS с использованием Apache 2.2 я сделал следующее:

  • Создайте speling.conf в ${APACHE}/mods-available, чтобы предоставить параметры конфигурации.

    <IfModule mod_speling.c>
        CheckSpelling On
        CheckCaseOnly On
    </IfModule>
    
  • Вставьте speling.conf и speling.load в каталог с включенными модулями ${APACHE}/mods-enabled:

    # cd ../mods-enabled
    # ln -s ../mods-available/speling.conf speling.conf
    # ln -s ../mods-available/speling.load speling.load
    
  • Перезагрузите сервер.

    # service restart apache2
    

Ответ 3

TL;DR: CheckCaseOnly поврежден из-за ошибки, которая осталась незафиксированной более шести лет с 10/2014.

Я знаю, что это старый вопрос, но я столкнулся с той же проблемой. Это обновление поможет другим людям с той же проблемой.

Текущие ответы на этот вопрос неверны, поскольку OP использует mod_speling правильно, но есть ошибка.

https://issues.apache.org/bugzilla/show_bug.cgi?id=44221

Основная проблема заключается в том, что люди apache не согласны с тем, что исправляют это поведение, потому что он изменяет остальную часть модуля. Это осталось незафиксированным для чего-то вроде 6 лет.

Ответ 4

Вам действительно нужен нечувствительный к регистру URL?
Почему бы просто не пропустить строчные URL-адреса, например?

RewriteEngine On
RewriteMap lc int:tolower
RewriteRule (.*) ${lc:$1} [R]

Посмотрите http://www.issociate.de/board/post/265865/make_URL