2011-03-09 9 views
7

Apache .gz gzip içeriği için basit bir içerik işleyici nasıl oluşturabilirim? http://localhost/doc/FAQ/Linux-FAQ.gz unun açılmasını ve tarayıcıya düz metin olarak göndermesini istiyorum. Linux için/usr/share/doc ve localhost/doc/adreslerinde çok fazla dokümantasyon var. İçeriği okumak için zless, zcat veya vim kullanmak istemiyorum. Yerel makinemin belgelerine göz atmak için apache kullanıyorum ve web tarayıcımın standart bir metin olarak yeniden canlanmasını sağladım, böylece * .gz dosyasını her seferinde indirmemi istemiyor.apache .gz gzip içerik işleyicisi/usr/share/doc ve 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> 

Ama Şimdi/usr/share/doc altında tüm bu .gz dosyayı istiyorum/düz metin olarak servered edilecek. Bence bunu cgi-bin'deki bir python betiğiyle yapabilirim. Bu dosyalar için güzel bir içerik işleyici arıyorum. Php dosyaları ele alındığı gibi .gz sıkıştırılmamış ve tarayıcıya gönderilmelidir.

<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 

Görüyorum ki bir mod_deflate var, bu nasıl uygulanır? Bu, gzip içeriğini ele alabilir.

Tarama belgelerini bu kadar kolaylaştırabilir. Buraya yardımcı olacak herhangi bir program kaynağı güzel olurdu.

cevap

7

Daha önce js/css dosyaları için böyle bir şey kullandım (gereksinimlerinizi karşılamak için aşağıda değiştirdim). senin virtualhost girişine ekleyin: Yukarıda Güncelleme

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> 

ubuntu içinde kodunuzu

maç için Başlıkları modülü

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

Update2 etkin olduğundan emin olun: eksikti "AddEncoding gzip gz" diye Gerçekleşen .. Aksi takdirde, dosya indirilmeye devam etti.

Güncelleme3: Eklenmiş apache modülü yükleme komutunu deflate.

<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> 

Önce dosyanın diğer bazı tip (örneğin bir css dosyası) ile deneyebilirsiniz: İşte benim deflate.conf bu. Örnek:

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

sizin virtualhosta Bu ekleyin:

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

Testi http://127.0.0.1/doc/test.css ve http://127.0.0.1/doc/test.css.gz ve almak neden olduğunu görün.

+0

@dolan ben yukarıda sahip bölümünde bölüm koyabilirsiniz. – nelaaro

+0

@nelaar Bildiğim kadarıyla, bu işe yaramalı .. Kodumu eklemek için gönderimi güncelledim. Mesaj tekrar o hat 41 üzerinde –

+0

sözdizimi hatası çalışmıyor eğer/etc/apache2/siteler etkin/000-default: Geçersiz komut 'Başlık', belki sunucu yapılandırmasında bulunmayan bir modül tarafından yanlış yazılmış veya tanımlanmış 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

Ben kendimi beğenmedim. Bana hala sorun veriyor – nelaaro

+0

Benim için 'AddType' ile başlayan satırları yorumladıktan sonra çalışıyor. – ggg

İlgili konular