mod_asis是专为.asis文件设计的轻量处理器,仅原样输出含HTTP状态行和头的内容,但要求首行为合法状态行、头体间有纯\n空行、全文用Unix换行符;需主配置启用模块并绑定.asis后缀。

mod_asis 不是“让任意文件原样输出”的通用开关,而是专为 .asis 后缀文件设计的轻量级处理器——它只做一件事:把文件内容(含你手写的 HTTP 状态行和头)原封不动发给客户端,不加、不改、不校验语义,但对格式有硬性要求。
必须满足的三个硬性格式条件
Apache 不会帮你补全或修正,只要以下任一条件不满足,就会返回 500 错误,并在 error log 中提示 malformed header block:
- 第一行必须是合法状态行,格式为 HTTP/1.1 200 OK(协议版本不能省,空格不可少,结尾需换行 \n)
- 响应头部分与响应体之间,必须有一个完全空白的行(仅含一个 Unix 换行符 \n,不能有空格、制表符或\r)
- 整个文件必须使用 Unix 换行符(\n);Windows 的 \r\n 在多数 Apache 版本中会导致解析失败
启用 mod_asis 的最小必要配置
该模块默认不加载,也不能靠 .htaccess 开启。你需要修改主配置(如 /etc/apache2/mods-enabled/asis.load 或 httpd.conf):
- 确认模块已载入:
LoadModule asis_module modules/mod_asis.so - 绑定后缀与处理器:
AddHandler asis-handler .asis - 若作用于某目录,还需加:
<Directory "/var/www/html"> SetHandler asis-handler </Directory> - 避免冲突:用
RemoveHandler .asis清除其他模块对该后缀的处理逻辑
改完后务必执行 sudo systemctl reload apache2(或 apachectl graceful)。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
一个可用的重定向 .asis 示例
将以下内容保存为 /var/www/html/move.asis(注意权限:Apache 进程需可读,SELinux 下可能需 chcon -t httpd_sys_content_t):
Status: 302 Found
Location: https://example.com/new-page
Content-Type: text/plain
This redirect is served raw via mod_asis.
访问 http://yoursite/move.asis,你会看到浏览器跳转,且响应头(如 Location)完全来自文件本身,而非 Apache 自动添加。
哪些头能写?哪些不能写?
你可以自由写 Content-Type、Location、Cache-Control、Set-Cookie 等任意头,但以下两个头绝对不要写:
-
Date:— Apache 一定会自动加上,重复会导致客户端解析异常 -
Server:— 同样由 Apache 强制注入,写入会被忽略或引发冲突
另外,Last-Modified 也不会被 Apache 补充,如果你需要,必须自己写进 .asis 文件中。

















