2011-03-09 32 views
7

如何爲apache .gz gzip內容創建一個簡單的內容處理程序。我希望它解壓縮說http://localhost/doc/FAQ/Linux-FAQ.gz並將其作爲純文本發送到瀏覽器。在/ usr/share/doc和localhost/doc /中有很多Linux文檔。我不想用zless,zcat或vim來閱讀內容。我使用apache瀏覽本地機器上的文檔,並讓我的網頁瀏覽器將其作爲標準文本進行恢復,這樣它就不會每次都要求我下載* .gz文件。apache .gz gzip內容處理程序,用於Linux文檔/ usr/share/doc和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> 

但現在我希望將/ usr/share/doc /下的所有.gz文件作爲純文本進行加密。我想我可以很簡單地用cgi-bin中的python腳本來做到這一點。我正在爲這些文件尋找一個很好的內容處理程序。就像處理php文件的方式一樣,.gz應該解壓縮併發送到瀏覽器。

<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 

我看到有一個mod_deflate,這將如何適用。這可以處理gzip內容。

這會使瀏覽文檔變得更容易。任何編程資源在這裏都會很好。

回答

7

我以前使用過類似js/css文件的東西(我修改了下面的代碼以符合您的需求)。添加到您的虛擬主機條目:

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確保頭模塊啓用

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

UPDATE2:意識到 「AddEncoding gzip的GZ」 失蹤..否則,文件不斷嘗試下載。

Update3:增加了apache模塊deflate install命令。這裏是我的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> 

你可以先用一些其他類型的文件(例如CSS文件)試試。例如:

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

添加到您的虛擬主機:

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

測試http://127.0.0.1/doc/test.csshttp://127.0.0.1/doc/test.css.gz,看看是什麼導致你。

+0

@dolan可能我放在節我上面的部分。 – nelaaro 2011-03-09 06:29:52

+0

@nelaar據我所知,這應該很好..我更新了我的帖子,包括您的代碼。如果這不起作用,請回復 – 2011-03-09 06:33:01

+0

/etc/apache2/sites-enabled/000-default的第41行的語法錯誤: 命令'Header'無效,可能是拼寫錯誤或未包含在服務器配置中的模塊定義的 41標頭集內容編碼:gzip – nelaaro 2011-03-09 06:34:44

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

我取消了註釋。它仍然給我的問題 – nelaaro 2011-03-11 10:16:33

+0

對於我來說,它在你以'AddType'開始的行註釋掉後會起作用。 – ggg 2013-09-20 06:03:33

相關問題