要让 apache 原样发送文件中的 http 头,需启用 mod_asis 模块并配置 send-as-is 处理器;文件须以合法状态行开头、http 头后跟空行、格式严格符合规范,适用于重定向、自定义错误页、api 模拟等场景。
要让 apache 直接发送文件中已写好的 http 头(比如自定义状态码、头字段、重定向等),必须启用并正确配置 mod_asis 模块。它不添加、不修改、不解析——只原样输出文件内容,前提是该文件以合法 http 响应格式开头。
启用 mod_asis 模块
该模块默认通常未加载,需手动启用:
- Debian/Ubuntu:运行
a2enmod asis && systemctl reload apache2 - RHEL/CentOS:编辑
/etc/httpd/conf/httpd.conf,取消注释这一行:LoadModule asis_module modules/mod_asis.so,再执行systemctl reload httpd - 源码编译安装:确认编译时启用了
--enable-asis,或检查modules/mod_asis/.libs/mod_asis.so是否存在
指定 asis 处理器作用范围
仅启用模块还不够,必须将目标文件或目录明确交给 send-as-is 处理器处理:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 按路径匹配(推荐):
<directory><br> SetHandler send-as-is<br></directory>
这样,所有放在/var/www/html/asis/下的文件都会被原样发送 - 按扩展名匹配:
AddHandler send-as-is .asis
然后把文件命名为redirect.asis,内容示例:Status: 302 Found<br>Location: https://example.com/new<br><br>This is a redirect.
文件格式要求与常见错误
Apache 对 mod_asis 文件有严格格式要求,否则返回 500 错误:
- 第一行必须是合法 HTTP 状态行,如
Status: 200 OK或Status: 301 Moved Permanently;也可省略,由模块自动补为200 OK - HTTP 头部分必须以空行结束(即两个连续换行符
\n\n) - 头字段名后紧跟冒号和空格,例如
Content-Type: text/plain,不能多空格或少空格 - 避免 BOM、UTF-8 编码中的控制字符、Windows 风格 CRLF 混用(建议统一用 LF)
典型使用场景
适合需要完全控制响应行为、绕过 Apache 默认处理逻辑的轻量级用途:
- 快速实现临时跳转(比
Redirect更底层,不依赖mod_alias) - 返回自定义错误页并携带特定头(如
X-Robots-Tag: noindex) - 模拟 API 响应(返回 JSON +
Content-Type: application/json+ 状态码) - 配合脚本生成动态响应头(如根据时间戳设置不同
Cache-Control)










