apache 2.4 中开启 rewrite 模块需两步:一是在 httpd.conf 中取消 loadmodule rewrite_module modules/mod_rewrite.so 注释;二是将网站根目录对应的 块中 allowoverride none 改为 allowoverride all,并确保 require all granted。

Apache 2.4 中如何开启 rewrite 模块
rewrite 模块默认是禁用的,不手动启用,.htaccess 里的 RewriteRule 和 RewriteCond 会完全被忽略,连 500 错误都不会报——页面直接 404 或返回原始文件内容。
关键操作只有两步:加载模块 + 允许目录级重写。缺一不可。
- 打开
Apache24/conf/httpd.conf,找到这行并去掉前面的#:LoadModule rewrite_module modules/mod_rewrite.so - 找到你网站根目录对应的
<directory></directory>块(通常是"${SRVROOT}/htdocs"或你自定义的DocumentRoot路径),把里面的AllowOverride None改成AllowOverride All - 如果该
<directory></directory>块里还有Require all denied或Require local,确保它没被注释且逻辑允许访问(常见组合是Require all granted)
为什么 .htaccess 不生效?常见配置陷阱
即使 rewrite 模块已加载,.htaccess 仍可能静默失效——这不是 PHP 的问题,而是 Apache 的权限和作用域限制。
-
AllowOverride All必须出现在**对应物理路径**的<directory></directory>块中,不是<virtualhost></virtualhost>或全局位置;Win7 下路径大小写不敏感,但斜杠方向必须是正斜杠/,不能用反斜杠\ - 如果用了自定义
DocumentRoot(比如E:/www),一定要在httpd.conf里找到并修改**两个地方**:DocumentRoot和紧随其后的<directory></directory>路径,两者必须完全一致 - Apache 2.4 引入了新权限模型,
Order Allow,Deny这类旧语法已废弃,强行保留会导致启动失败或 403;必须改用Require系列指令
验证 rewrite 是否真正生效
别依赖“看起来 URL 变了”这种主观判断。最可靠的方式是主动触发一个必然失败的规则,看是否报错。
- 在网站根目录放一个
.htaccess,内容只有一行:RewriteEngine OnRewriteRule ^test-rewrite$ /not-exist.php [R=302] - 重启 Apache(
httpd.exe -k restart),访问http://localhost/test-rewrite - 如果跳转到
/not-exist.php并显示 404 页面,说明 rewrite 已工作;如果返回 404 且 URL 没变,说明模块没加载或AllowOverride未生效 - 额外检查:命令行执行
httpd.exe -M | findstr rewrite,应输出rewrite_module (shared)
Win7 下特别要注意的兼容性点
Win7 自带的 Windows Firewall 或第三方安全软件有时会拦截 Apache 的模块加载行为,尤其是从非标准路径加载 mod_rewrite.so 时。
- 确保
mod_rewrite.so文件真实存在于Apache24/modules/目录下,且文件权限未被系统锁定(右键 → 属性 → 安全 → 确认 Users 组有读取权限) - 如果 Apache 启动时报错
Cannot load modules/mod_rewrite.so into server,大概率是 VC++ 运行库缺失——PHP 7.x 通常需 VS2015–2019 的vcruntime140.dll,而 Win7 默认不带,必须单独安装Microsoft Visual C++ 2015–2019 Redistributable - Win7 SP1 是硬性要求;未打补丁的原始 Win7 可能因 TLS/SSL 协议栈过旧,导致某些 Apache 2.4.4x+ 版本无法正常加载动态模块
httpd.exe -t 无报错,再用 httpd.exe -M 验证模块加载,最后才调试 .htaccess 内容。php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











