我需要mod_headers
根据获取参数强制下载文件。
<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
...
是否有调试日志可以找出已加载的mod,什么没有加载?
您需要检查mod_headers.c
模块:
<IfModule mod_headers.c>
(请参阅有关.so/.c Quitt的此答案)
但是您获得500错误的原因是双重的。
首先,<FilesMatch>
容器期望正则表达式,"*.gif"不是有效的正则表达式。您可能只想使用<Files>
容器。
第二,<If>
在Apache 2.2中不可用,仅版本2.4。如果您不使用Apache 2.4,那么您将无法使用<If>
容器。