2009-02-03 18 views
13

I file system di Windows (FAT, NTFS) non si preoccupano del caso dei nomi dei file (maiuscole e minuscole). Di conseguenza i programmi - come il server Web Apache - in esecuzione su Windows gestiscono il file in modo insensibile.Posso rendere un Apache in esecuzione su Windows case-sensitive?

Quando si creano siti Web su Windows, si creano inavvertitamente collegamenti ecc. Che non corrispondono al caso del nome file effettivo. Di solito si notano questi errori fino a quando non si distribuisce il sito Web su file system sensibili al maiuscolo/minuscolo (come predefinito su Linux, UNIX, ...).

Ora, vorrei sapere se c'è un modo per evitare questo tipo di errori da facendo in modo che il server Web Apache si preoccupi del caso anche se al file system non interessa. Voglio dire NTFS differisce tra lettere maiuscole e minuscole nei nomi dei file, quindi dovrebbe essere teoricamente possibile verificare se i nomi dei file corrispondono in modo sensibile al maiuscolo/minuscolo.


so che le convenzioni di denominazione come "Utilizzare solo minuscolo" può contribuire ad evitare questo tipo di problemi, ma che non aiuta con i file esistenti ed è meno conveniente :-)

Inoltre, non l'utilizzo di Windows non è un'opzione. Non utilizzo Windows volontariamente e l'esecuzione di Apache su una piattaforma diversa non è possibile in questo caso.

risposta

3

Per quanto ne so non si può, ma guarderò questa domanda per altre risposte.

Come soluzione, si dice che è necessario sviluppare su Windows. Che ne dici di installare Linux in un PC virtuale. Esistono diversi programmi VM gratuiti come VirtualBox e Microsoft Virtual PC. In questo modo, puoi abbinare il tuo ambiente di sviluppo al tuo ambiente di distribuzione.

Oltre a ciò, trovo che sia meglio assicurarsi solo di usare lettere minuscole per tutto, riducendo al minimo gli errori.

+1

Avevo anche l'idea di utilizzare il software di virtualizzazione (VMware, ecc.) Per eseguire Apache su Linux e mi aspettavo di ottenere questo tipo di risposta. Ma quello che mi infastidisce è che IMHO dovrebbe essere possibile su Windows ... – f3lix

+0

Questa risposta è ancora vera al 100% o le cose cambiano nel corso di 7 anni in meglio? Perché non riesco a trovare una soluzione 'xampp',' localhost', 'database tables' – Wanjia

0

Sembra possibile abilitare mod_spelling con la direttiva CheckSpelling attiva nel file di configurazione di Apache.

informazioni e il contesto trovate qui: http://bytes.com/topic/apache/answers/608164-apache-case-sensitive-urls

Edit: quanto sopra è stato citato per il rovescio della questione, mi dispiace. Qualcuno fa la stessa domanda che fai dopo, ma non risponde mai se la risposta funziona o meno. Dopo aver guardato oltre, non sembra proprio che ci sia una bandiera o qualche impostazione in Apache per farlo. Alcune persone suggeriscono di cercare di rendere il file system case-sensitive che sembra possibile, ma sembra che causi più problemi, specialmente con altri programmi che non si aspettano questo.

Nel complesso, se non è possibile sviluppare su un altro sistema operativo e non è possibile passare e modificare tutti i nomi file esistenti in lettere minuscole (che è comprensibile), non sembra che si abbiano davvero molte opzioni. L'unico suggerimento che vorrei darvi a questo punto è provare ad avere un ambiente di test, impostarlo esattamente come il vostro ambiente di produzione e testare il più possibile prima di inviare alla produzione.

Ci scusiamo per l'equivoco e che non posso essere di maggior aiuto.

+0

la domanda in questa discussione è "Come posso fare apache ** caso in sensibile **?" e mod_spelling "corregge errori di ortografia di. URL che gli utenti potrebbero aver inserito, ** ignorando le maiuscole ** e consentendo fino a un mi sspelling. " In poche parole, questo è per gli utenti Linux che vogliono il comportamento di Windows ... – f3lix

+0

Il forum a cui ti riferisci non offre una soluzione per rendere Apache su Windows case sensitive. Solo il contrario; case insensitive su sistemi unix. – bouke

+0

non puoi fare il contrario di questo? Il forum menziona quello che stai cercando qui sotto, dove questa risposta è stata citata, ma la persona non è mai tornata e ha detto se ha funzionato o meno. L'hai provato? Sto ancora cercando però. –

0

NTFS supporta effettivamente nomi di file sensibili al maiuscolo/minuscolo. Viene utilizzato e abilitato da Microsoft's Services for UNIX. È controllato nel registro. Esegui un google sulla chiave di registro "ObCaseinSensitive". ad es. msdn blog e in particolare questo articolo Microsoft KB: kb817921

+0

Il problema è che non funziona molto bene e molti programmi Windows non lo supportano. – BobbyShaftoe

0

Questo non è un problema che puoi risolvere nel modo desiderato. Devi caricare i tuoi file forzando le lettere minuscole. Eviterete il problema dei conflitti di denominazione su Windows, quindi se state costruendo cose su Windows, non dovrete preoccuparvi di ciò. Ora, è necessario utilizzare una sorta di programma di controllo dei collegamenti per trovare gli URL contenenti lettere maiuscole e quindi sostituirli con l'equivalente in lettere minuscole.

Tuttavia, Ryan Guill ha fatto un buon suggerimento per abilitare CheckSpelling.

+0

CheckSpelling non è di aiuto in quanto è possibile utilizzarlo solo per coprire gli errori su un file system sensibile al maiuscolo/minuscolo. Se, ad esempio, comprimo il mio sito web per darlo a qualcuno per la lettura offline, non posso dirgli di installare Apache con CheckSpelling abilitato per evitare di inciampare sui link morti – f3lix

+0

Ecco perché è necessario fare la prima parte di ciò che ho suggerito. – BobbyShaftoe

0

Windows, può essere impostato sulla modalità maiuscole/minuscole. Il volume NTFS supporta anche la distinzione tra maiuscole e minuscole. Se è già stata installata l'interoperabilità UNIX, è possibile che Windows sia già diventato in modalità maiuscole e minuscole. Credo che ci sia un passaggio nel registro, ma ho dimenticato dove si trova, quindi non posso immaginarlo per te. :-(

2

Secondo la documentazione di Apache, non è possibile, perché la differenza tra maiuscole e minuscole è incorporata nel sistema operativo Windows Ma è possibile "invertire il problema" e trasformare il server Apache in Linux/Unix in maiuscole e minuscole. le seguenti direttive al tuo .htaccess:

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

Vedere la documentazione here

Problemi correlati