2011-03-09 20 views
7

Come posso creare un gestore di contenuti semplice per il contenuto gzip di apache .gz. Voglio decomprimerlo dire http://localhost/doc/FAQ/Linux-FAQ.gz e inviarlo al browser come testo normale. C'è molta documentazione per Linux in/usr/share/doc e localhost/doc /. Non voglio usare zless, zcat o vim per leggere il contenuto. Uso apache per sfogliare la documentazione sul mio computer locale e fare in modo che il mio browser lo riporti come testo standard in modo che non mi chieda di scaricare il file * .gz ogni volta.gestore di contenuto gzip apache .gz per documentazione Linux/usr/share/doc e localhost/doc/

Alias /doc/ "/usr/share/doc/" 
Alias local.doc "/usr/share/doc/" 
<Directory "/usr/share/doc/"> 
    Options Indexes MultiViews FollowSymLinks 
    AllowOverride None 
    Order deny,allow 
    Deny from all 
    Allow from 127.0.0.0/255.0.0.0 ::1/128 
</Directory> 

ma ora voglio che tutti questi file .gz sotto/usr/share/doc/a servered come testo normale. Penso che potrei farlo molto semplicemente con uno script python in cgi-bin. Sto cercando un buon gestore di contenuti per quei file. Come il modo in cui vengono gestiti i file php .gz deve essere decompresso e inviato al browser.

<IfModule mod_php5.c> 
    AddType application/x-httpd-php .php .phtml .php3 
    AddType application/x-httpd-php-source .phps 
</IfModule> 
LoadModule php5_module /usr/lib/apache2/modules/libphp5.so 

Vedo che esiste una mod_deflate, come si applicherebbe. Questo potrebbe gestire il contenuto di gzip.

renderebbe la documentazione di navigazione molto più semplice. Qualsiasi risorsa di programmazione per aiutare qui sarebbe bella.

risposta

7

Ho usato qualcosa di simile prima per i file js/css (ho modificato il seguito per soddisfare le tue esigenze). Aggiungi questo al vostro ingresso virtualhost:

Alias /doc/ "/usr/share/doc/" 
Alias local.doc "/usr/share/doc/" 
<Directory /usr/share/doc> 
    Options Indexes MultiViews FollowSymLinks 
    AllowOverride None 
    Order deny,allow 
    Deny from all 
    Allow from 127.0.0.0/255.0.0.0 ::1/128 

    AddEncoding gzip gz 
    <FilesMatch "\.gz$"> 
     ForceType text/plain 
     Header set Content-Encoding: gzip 
    </FilesMatch> 
</Directory> 

Aggiornato sopra per abbinare il vostro codice

in Ubuntu in modo che il modulo intestazioni è abilitato

$ sudo a2enmod headers 
$ sudo a2enmod deflate 
$ sudo apache2ctl restart 

Update2: si rese conto che "AddEncoding gzip gz" che mancava .. altrimenti, il file continuava a provare a scaricare.

Update3: Aggiunto il comando di installazione di deflate del modulo apache. Ecco il mio deflate.conf:

<IfModule mod_deflate.c> 
     # these are known to be safe with MSIE 6 
     AddOutputFilterByType DEFLATE text/html text/plain text/xml 

     # everything else may cause problems with MSIE 6 
     AddOutputFilterByType DEFLATE text/css 
     AddOutputFilterByType DEFLATE application/x-javascript application/javascript application/ecmascript 
     AddOutputFilterByType DEFLATE application/rss+xml 
</IfModule> 

Si potrebbe provare prima con qualche altro tipo di file (ad esempio un file CSS). Esempio:

cd /usr/share/doc 
cat ".styles { width: 50px; }" > test.css 
gzip -c test.css > test.css.gz 

Aggiungi questo al vostro virtualhost:

<FilesMatch "\.css\.gz$"> 
     ForceType text/css 
     Header set Content-Encoding: gzip 
    </FilesMatch> 

test http://127.0.0.1/doc/test.css e http://127.0.0.1/doc/test.css.gz e vedere quali risultati si ottiene.

+0

@dolan ho potuto mettere la sezione nella sezione ho sopra. – nelaaro

+0

@nelaar per quanto ne so, che dovrebbe funzionare bene .. Ho aggiornato il mio post per includere il codice. Postback se questo non funziona –

+0

Errore di sintassi sulla riga 41 di/etc/apache2/sites-enabled/000-default: Comando non valido 'Header', forse errato o definito da un modulo non incluso nella configurazione del server 41 Header set Content-Encoding: gzip – nelaaro

0
cat /etc/apache2/mods-enabled/mime.conf | head -n 30 
<IfModule mod_mime.c> 

# 
# TypesConfig points to the file containing the list of mappings from 
# filename extension to MIME-type. 
# 
TypesConfig /etc/mime.types 

# 
# AddType allows you to add to or override the MIME configuration 
# file mime.types for specific file types. 
# 
#AddType application/x-gzip .tgz 
# 
# AddEncoding allows you to have certain browsers uncompress 
# information on the fly. Note: Not all browsers support this. 
# Despite the name similarity, the following Add* directives have 
# nothing to do with the FancyIndexing customization directives above. 
# 
AddEncoding x-compress .Z 
AddEncoding x-gzip .gz .tgz 
AddEncoding x-bzip2 .bz2 
# 
# If the AddEncoding directives above are commented-out, then you 
# probably should define those extensions to indicate media types: 
# 
AddType application/x-compress .Z 
AddType application/x-gzip .gz .tgz 
AddType application/x-bzip2 .bz2 
+0

ho interrotto il mio. Mi sta ancora dando problemi – nelaaro

+0

Per me, funziona dopo aver commentato le righe che iniziano con "AddType". – ggg

Problemi correlati