“invalid command 'header'”错误源于mod_headers模块未启用,因header非apache核心指令;需在httpd.conf中取消#loadmodule headers_module modules/mod_headers.so注释并重启服务。
这个错误说明 apache 遇到了不认识的 header 指令,根本原因是 mod_headers 模块未启用。
为什么会出现“Invalid command 'Header'”
Header 不是 Apache 核心指令,它由 mod_headers 模块提供。如果该模块没加载,任何出现在配置文件(如 httpd.conf、虚拟主机配置或 .htaccess)中的 Header 指令都会被拒绝,并报出你看到的提示。
常见触发场景包括:
- 在
.htaccess或站点配置中写了Header set X-Frame-Options "DENY"等安全头设置,但模块未开 - 复制了别人配置里的响应头管理段落(比如移除
X-Powered-By),却忘了检查依赖模块 - 使用了某些 CMS 或安全插件自动生成的规则,它们默认假定
mod_headers已就绪
确认模块是否已启用
进入 Apache bin 目录,运行:
httpd -M | findstr headers(Windows)apachectl -M | grep headers(Linux/macOS)
若无输出,说明模块确实未加载。
启用 mod_headers 的方法
打开主配置文件 httpd.conf(Apache 2.2)或 apache2.conf(Ubuntu/Debian),查找以下行:
#LoadModule headers_module modules/mod_headers.so
去掉开头的 # 号,保存文件。
然后重启 Apache:
httpd -k restart(Windows)sudo systemctl restart apache2(Ubuntu/Debian)
再用 httpd -t 或 apachectl configtest 测试语法,应显示 Syntax OK。
额外注意点
部分旧版 Apache(如 2.2.x)默认不启用该模块,而新版(2.4+)多数已默认开启,但仍建议手动确认。
如果在 .htaccess 中使用 Header,还需确保所在目录允许覆盖:配置中需有 AllowOverride All 或至少包含 FileInfo。
启用后,可放心使用 Header set、Header unset、Header always set 等指令控制请求与响应头。










