end标志可彻底终止apache重写流程,防止全局规则干扰特定路径;要求apache≥2.3.9(推荐2.4+),需前置声明、不可与r混用,且[end]已隐含l行为。

Apache 的 mod_rewrite 默认按顺序逐条匹配并执行规则,若未加控制,全局规则(如强制 HTTPS、统一入口等)可能意外改写你本想“放行”的特定业务路径(比如 API 接口、静态资源目录、健康检查端点)。END 标志是解决这类干扰最直接有效的方式——它让匹配成功的规则立即终止整个重写流程,后续所有规则(无论在 .htaccess 还是 httpd.conf 中)都不再参与处理。
为什么 END 比 L 更适合防干扰
L(Last)仅停止当前轮次的规则链,但 Apache 在某些情况下(如内部子请求、Alias 后重写)会重启重写过程,L 无法阻止后续轮次的规则再次介入。END 则彻底终止整个重写引擎,不重启、不回溯,确保你的业务路径“一锤定音”不被后续任何规则触碰。
正确启用 mod_rewrite 并确认 END 支持
END 标志要求 Apache 版本 ≥ 2.3.9。确认方式:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 运行
httpd -v或apache2 -v,版本号需为 2.4.x 或更高(2026 年主流环境基本满足) - 无需额外加载模块,只要
mod_rewrite已启用即可使用 END - 检查配置语法:
sudo apachectl configtest,若提示 “Invalid flag” 则说明版本过低
典型防干扰场景与 END 写法
假设网站根目录下有 /api/v1/ 接口需直通 PHP-FPM,但全局规则又做了强制 HTTPS 和前端路由 fallback(如 RewriteRule ^(.*)$ /index.php [L]),这时必须用 END 隔离:
- 在
.htaccess或虚拟主机配置中,将业务路径规则放在最前面 - 写法示例:
RewriteRule ^/api/v1/(.*)$ /api/v1/index.php [END] - 注意:开头的
/在 .htaccess 中通常省略(即^api/v1/(.*)$),而在 httpd.conf 中需保留 - 若需兼容子目录部署,配合
RewriteBase使用,例如RewriteBase /myapp后,规则写成^api/v1/(.*)$
END 与其他标志组合的注意事项
END 本身已隐含 L 行为,因此 [END,L] 是冗余写法,只需 [END] 即可。
- 不要和
R(重定向)混用:END 用于内部重写,R 是外部跳转,二者逻辑冲突 - 可安全搭配
QSA(保留查询参数)或NC(忽略大小写),例如:RewriteRule ^health$ /status.php [END,QSA,NC] - 若该路径还需设置响应头或访问控制,应通过其他模块(如
mod_headers或<location></location>)单独配置,而非依赖 rewrite 规则










