2009-02-03 22 views
13

Los sistemas de archivos de Windows (FAT, NTFS) no se preocupan por el caso de los nombres de los archivos (no distingue entre mayúsculas y minúsculas). En consecuencia, los programas, como el servidor web Apache, que se ejecuta en Windows manejan el archivo insensible.¿Puedo hacer que un Apache que se ejecute en Windows distingue entre mayúsculas y minúsculas?

Cuando crea sitios web en Windows, involuntariamente crea enlaces, etc. que no coinciden con el caso del nombre real del archivo. Por lo general, no se da cuenta de estos errores hasta que implementa el sitio web en sistemas de archivos sensibles a mayúsculas y minúsculas (por defecto en Linux, UNIX, ...).

Ahora, me gustaría saber si hay una manera de evitar este tipo de errores haciendo que el servidor web Apache de alguna manera se preocupe por el caso incluso si el sistema de archivos no se preocupa. Me refiero a que NTFS difiere entre mayúsculas y minúsculas en los nombres de los archivos, por lo que debería ser teóricamente posible verificar si los nombres de los archivos coinciden con mayúsculas y minúsculas.


sé que las convenciones de nomenclatura como "Sólo utilizan minúsculas" puede ayudar a evitar este tipo de problemas, pero eso no quiere ayudar con los archivos existentes y es menos conveniente :-)

Además, no usar Windows no es una opción. No uso Windows de forma voluntaria y no es posible ejecutar el Apache en una plataforma diferente en este caso.

Respuesta

3

Por lo que sé, no puedes, pero veré esta pregunta para obtener otras respuestas.

Como solución temporal, dices que debes desarrollar en Windows. ¿Qué hay de instalar Linux en una PC virtual? Hay varios programas de VM gratuitos, como VirtualBox y Microsoft Virtual PC. De esta forma, puede hacer coincidir su entorno de desarrollo con su entorno de despliegue.

Más allá de eso, creo que lo mejor es asegurarse de usar minúsculas para todo, minimizando los errores.

+1

También tuve la idea de usar software de virtualización (VMware, etc.) para ejecutar Apache en Linux y esperaba obtener este tipo de respuesta. Pero lo que me molesta es que, en mi humilde opinión, debería ser posible en Windows ... – f3lix

+0

¿Sigue siendo 100% cierta esta respuesta o las cosas cambiaron en el transcurso de 7 años para mejor? Porque no puedo encontrar una solución 'xampp',' localhost', 'tablas de base de datos' – Wanjia

0

Parece que puede habilitar mod_spelling con la directiva CheckSpelling en el archivo de configuración de Apache.

Información y contexto que se encuentra aquí: http://bytes.com/topic/apache/answers/608164-apache-case-sensitive-urls

Editar: lo anterior fue citado por el reverso de la pregunta, lo siento. Alguien te hace la misma pregunta que haces después, pero nunca responde si la respuesta funciona o no. Después de mirar más lejos, realmente no parece haber una bandera ni ningún ajuste en apache para hacer esto. Algunas personas sugieren tratar de hacer que el sistema de archivos distinga entre mayúsculas y minúsculas, lo que parece posible, pero parece que causa más problemas, especialmente con otros programas que no esperan esto.

En general, si no puede desarrollar en otro sistema operativo y no puede ir y cambiar todos sus nombres de archivo existentes en minúsculas (lo que es comprensible), entonces no parece que realmente tenga muchas opciones. La única sugerencia que le daría en este punto es tratar de obtener un entorno de prueba, configurar exactamente lo mismo que su entorno de producción y probar tanto como sea posible antes de enviarlo a producción.

Disculpa el malentendido y no puedo ser de más ayuda.

+0

la pregunta en este hilo es "¿Cómo puedo hacer que Apache ** ** caso en el sensible?" y mod_spelling "corrige errores ortográficos de. URLs que los usuarios pueden haber ingresado, ** ignorando las mayúsculas ** y permitiendo hasta un mi sspelling. " En pocas palabras, esto es para usuarios de Linux que desean el comportamiento de Windows ... – f3lix

+0

El foro al que se refiere no ofrece una solución para hacer que Apache en Windows distinga entre mayúsculas y minúsculas. Solo al revés; Caso insensible en sistemas Unix. – bouke

+0

¿No puedes hacer lo contrario de esto? El foro menciona lo que está buscando a continuación, donde esta respuesta que cité fue pero la persona nunca regresó y dijo si funcionó o no. ¿Lo has probado? Todavía estoy mirando sin embargo. –

0

NTFS admite nombres de archivos con mayúsculas y minúsculas. Es utilizado y habilitado por los Servicios de Microsoft para UNIX. Se controla en el registro. Haga un google en la clave de registro "ObCaseinSensitive". p. msdn blog y, en particular, este Microsoft artículo de KB: kb817921

+0

El problema es que no funciona muy bien y muchos programas de Windows no lo admiten. – BobbyShaftoe

0

Esto no es un problema que puede resolver de la manera que desee. Debe cargar sus archivos forzando minúsculas. Evitará el problema de conflicto de nombres en Windows, por lo que si está creando cosas en Windows, entonces no tendrá que preocuparse por eso. Ahora, necesita utilizar algún tipo de programa de verificación de enlaces para encontrar las URL que contienen letras mayúsculas y luego reemplazarlas con el equivalente en minúsculas.

Sin embargo, Ryan Guill hizo una buena sugerencia para habilitar CheckSpelling.

+0

CheckSpelling no ayuda, ya que solo puede usarlo para ocultar errores en un sistema de archivos que distingue entre mayúsculas y minúsculas. Si, por ejemplo, compruebo mi sitio web para dárselo a alguien para leerlo sin conexión, no puedo decirle que instale Apache con CheckSpelling activado para evitar tropezar con enlaces muertos – f3lix

+0

Es por eso que debe hacer la primera parte de lo que sugerí. – BobbyShaftoe

0

Windows, CAN se puede establecer en modo sensible a mayúsculas y minúsculas. El volumen NTFS también es compatible con el modo de mayúsculas y minúsculas. Si instaló antes la interoperabilidad de UNIX, su Windows posiblemente ya se haya convertido en modo sensible a mayúsculas y minúsculas. Creo que hay un cambio en el registro, pero olvidé dónde está, así que no puedo entenderlo para ti. :-(

2

De acuerdo con la documentación de Apache, no es posible, porque la insensibilidad de mayúsculas y minúsculas está incrustada en el sistema operativo Windows. Pero puede "revertir el problema" y convertir el servidor Apache en Linux/Unix insensible a mayúsculas y minúsculas. las siguientes directrices a su .htaccess:

RewriteEngine On 
RewriteMap lowercase int:tolower 
RewriteCond %{REQUEST_URI} [A-Z] 
RewriteRule (.*) ${lowercase:$1} [R,L] 

Ver la documentación here

Cuestiones relacionadas