phpenv中.htaccess默认不生效,因apache的mod_rewrite未启用且allowoverride为none;需在httpd.conf中启用mod_rewrite.so、将对应directory块的allowoverride设为all,并重启apache。

phpEnv 支持 .htaccess,但默认不生效——因为底层 Apache 的 mod_rewrite 模块未启用,且站点目录的 AllowOverride 被设为 None。这两项不改,.htaccess 文件再规范也没用。
确认并启用 Apache 的 mod_rewrite 模块
phpEnv 用的是 Apache,所以重写能力完全取决于它是否加载了 mod_rewrite。不能只看 phpinfo() 里有没有,得看 Apache 实际是否加载成功。
- 打开 phpEnv 安装目录下的
Apache/conf/httpd.conf - 搜索
mod_rewrite.so,找到这行:LoadModule rewrite_module modules/mod_rewrite.so - 如果开头有
#,删掉;如果没有这行,手动加在LoadModule区块末尾(独占一行) - 保存后,必须通过 phpEnv 控制面板或托盘图标「重启 Apache」,仅重载配置无效
把站点目录的 AllowOverride 改成 All
即使 mod_rewrite 已启用,Apache 默认也会忽略 .htaccess——这是安全限制,不是 bug。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 仍在
httpd.conf中,搜索你网站根目录路径(如D:/phpEnv/www) - 找到对应的
<directory></directory>块 - 把里面的
AllowOverride None改成AllowOverride All - 注意:不要只改
AllowOverride,确保该<directory></directory>块内还包含Require all granted(Apache 2.4+ 必需) - 改完必须重启 Apache,这个设置不支持热重载
验证 .htaccess 是否真正起作用
别急着写复杂规则,先用最简跳转验证整个链路是否通。Windows 下新建 .htaccess 容易出编码问题,务必注意。
- 用记事本「另存为」,文件名填
.htaccess(英文点开头),编码选「UTF-8 无 BOM」或「ANSI」 - 内容只写三行:
RewriteEngine On<br>RewriteRule ^test$ /index.php [R=302,L]
- 访问
http://localhost/test,应跳转到index.php;若 404 或原样返回,说明前面两步至少有一处没生效 - 如果跳转成功,再逐步加防盗链、伪静态等规则;失败时优先查
httpd.conf路径是否匹配、重启是否执行、文件编码是否正确
最容易被忽略的是 Windows 下创建 .htaccess 时的文件名和编码——系统常自动补全为 .htaccess.txt,或用 UTF-8 with BOM 导致 Apache 拒绝解析。直接用命令行 echo > .htaccess 创建更可靠。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










