2014-01-22 46 views
2

我需要mod_headers根據GET參數強制下載文件。上述mod_headers模塊不加載,儘管它在httpd.conf中啓用

<FilesMatch "*.gif"> 
    <If "%{QUERY_STRING} =~ /dl/"> 
     #Download header 
     Header set Content-Disposition "attachment" 
    </If> 
    </FilesMatch> 

代碼會產生錯誤500。不過,如果我在<IfModule>妥善包裝它,它根本不會做任何事情:

<IfModule mod_headers> 
    <FilesMatch "*.gif"> 
    <If "%{QUERY_STRING} =~ /dl/"> 
     Header set Content-Disposition "attachment" 
    </If> 
    </FilesMatch> 
</IfModule> 

這讓我覺得,mod_headers沒有在加載所有。但我有它在httpd.conf啓用:

...
的LoadModule filter_module模塊/ mod_filter.so
的LoadModule headers_module模塊/ mod_headers.so
#的LoadModule heartbeat_module模塊/ mod_heartbeat.so
。 ..

是否有任何調試日誌找出哪些mods已被加載,哪些不是?

回答

1

您需要檢查爲mod_headers.c模塊:

<IfModule mod_headers.c> 

(見this answer有關的.so/.c的東西)

但原因你得到500錯誤是雙重的。

首先,<FilesMatch>容器需要一個正則表達式,「* .gif」不是有效的正則表達式。您可能只想使用<Files>容器。

其次,<If>不適用於apache 2.2,只有版本2.4。如果你不使用apache 2.4,那麼你將無法使用<If>容器。

相關問題