apache case-sensitive mod-speling

Apache mod_speling mayúsculas insensibles problema de direcciones



case-sensitive mod-speling (5)

¿De verdad quieres una URL insensible a mayúsculas?
¿Por qué no solo forzar urls en minúscula, como esto?

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

Eche un vistazo a http://www.issociate.de/board/post/265865/make_URL

Quiero tener direcciones URL que no distinguen entre mayúsculas y minúsculas utilizando el módulo mod_speling de Apache, pero esto produce listas no deseadas de "opciones múltiples" mientras que la documentación de Apache dice

Cuando se establece, esta directiva limita la acción de la corrección ortográfica a los cambios de mayúsculas y minúsculas. No se realizan otras posibles correcciones.

Estoy probando esto en una instalación nueva de Apache 2.2.16 Unix, pero sigo teniendo los mismos problemas que se presentaron en 2008.

¡Es un comportamiento inesperado (y no deseado) cuando Apache enumera algunas "opciones múltiples" (código de estado 300) cuando la directiva checkCaseOnly está activada!

Tengo esto en mi httpd.conf :

CheckSpelling on CheckCaseOnly on

Primera directiva para usar mod_speling , segunda directiva para limitar solo a correcciones de casos

¿Qué estoy haciendo mal?


Después de leer la answer del usuario 1647075 acerca de que este es un error conocido de Apache que probablemente no se solucione, decidí que mi mejor opción era ocultar la página de "múltiples opciones" del usuario al actualizar mi configuración de Apache para mostrar la página de error 404 para 300 códigos de estado:

ErrorDocument 300 /404.htm

Por supuesto, también puede crear una página de error personalizada en lugar de reutilizar la página de error 404.

Espero que esta solución ayude.


En Ubuntu 12.04 LTS usando Apache 2.2, hice lo siguiente:

  1. Cree speling.conf en ${APACHE}/mods-available para proporcionar las opciones de configuración.

    <IfModule mod_speling.c> CheckSpelling On CheckCaseOnly On </IfModule>

  2. Enlace speling.conf y speling.load en el directorio de módulos habilitados ${APACHE}/mods-enabled :

    # cd ../mods-enabled # ln -s ../mods-available/speling.conf speling.conf # ln -s ../mods-available/speling.load speling.load

  3. Reinicie el servidor.

    # service restart apache2


Para habilitar mod_speling (ya sea por ubicación o por VirtualHost) use la directiva:

CheckSpelling On

Si todo lo que quieres es insensibilidad al uso de casos:

CheckCaseOnly On

También necesita tener RewriteEngine habilitado:

RewriteEngine On


TLDR: CheckCaseOnly se rompe debido a un error que ha permanecido sin resolver durante más de seis años a partir del 10/2014.

Sé que esta es una vieja pregunta, pero me encontré con el mismo problema. Esta actualización es para ayudar a otros con el mismo problema.

Las respuestas actuales a esta pregunta son incorrectas, ya que el OP está usando mod_speling correctamente, pero hay un error.

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

El problema subyacente es que las personas apache están en desacuerdo sobre cómo arreglar este comportamiento porque cambia el resto del módulo. Esto ha permanecido sin fijar durante aproximadamente 6 años.