Una delle caratteristiche del protocollo HTTP è la sua capacità di inviare qualsiasi tipo di informazione, immagini, testo, codice eseguibile e quant'altro.
Apache esegue un vero e proprio attachment a questi pacchetti aggiungendo un header Content-Type che specifica al client a quale media type o MIME type appartiene il file.
File Types
Apache acquisisce informazioni sul MIME-type dal file di configurazione (generale per tutto il sistema) chiamato mime.types oppure dal file settato tramite la direttiva TypesConfig
TypesConfig
conf/mime.types
Ecco un piccolo esempio del contenuto di un simile file:
[root@dido root]# cat /usr/local/apache/conf/mime.types
application/x-shockwave-flash swf
application/x-tar tar
application/x-tcl tcl
application/x-tex tex
application/x-texinfo texinfo texi
application/x-troff-man man
application/x-wais-source src
Oltre che editando questo file è possibile aggiungere nuovi MIME type direttamente nel file di configurazione principale di Apache (httpd.conf) tramite la direttiva AddType ed abbinarla alla direttiva Action per affiancare l'esecuzione di una azione specifica ad ogni tipo di file richiesto.
Questo succede per molti moduli i quali richiedono l'esecuzione di cgi o di comandi esterni ad Apache.
AddType text/mylanguage .myl .mylanguage
Action image/gif /cgi-bin/process-gif.cgi
L'alternativa alla direttiva Addtype è AddHandler che mappa direttamente l'estensione con il MIME type, oppure ForceType che associa tutto il contenuto di una directory ad un MIME type.
AddHandler cgi-script .cgi
<Directory /images/>
ForceType image/gif
</Directory>
File Encoding
Ogni estensione di file è associata al tipo di encoding utilizzato per la sua creazione. Tramite la direttiva AddEncoding è possibile mappare queste corrispondenze.
Come succedeva per i Mime-type, Apache invia un header aggiuntivo, Content-Encoding per comunicare al client quale tipo di encoding è stato utilizzato per un certo file:
AddEncoding x-gzip .gz
AddEncoding x-compress .Z
File Languages
Oltre alle caratteristiche sopra esposte, è possibile associare una lingua ad un certa risorsa. In questo caso l'header contenente l'informazione è Content-Language e la direttiva utilizzata èAddLanguage:
AddLanguage en .en .english
AddLanguage it .it .italy .italian
La lingua di default è settabile tramite la direttiva DefaultLanguage, che permette anche più argomenti, trattati con la priorità scritta:
General configuration:
DefaultLanguage en in
Per-directory configuration
<Directory /italy/>
DefaultLanguage it
</Directory>