.htaccess不生效主因是mod_rewrite未启用、AllowOverride非All或文件位置错误:需验证httpd -M | grep rewrite输出rewrite_module (shared),确保Directory块含AllowOverride All和Require all granted,并将.htaccess置于正确根目录(如ThinkPHP的public/下)。

.htaccess 不生效,不是规则写错了,而是 Apache 根本没读它。核心问题通常出在服务器配置层面,和文件本身关系不大。
Apache 模块没启用
必须确认 mod_rewrite 模块已真实加载:
- 检查 httpd.conf 中这行是否取消注释:LoadModule rewrite_module modules/mod_rewrite.so
- Windows 下可运行 httpd -M | findstr rewrite,Linux 下用 httpd -M | grep rewrite,看到 rewrite_module (shared) 才算成功
- PHPStudy 用户需进控制面板 → 软件管理 → Apache → 模块,勾选 rewrite_module 并重启;但部分版本勾选后不自动写入配置,仍需手动核对 httpd.conf
AllowOverride 设置错误
这是最常被忽略的关键项。即使 .htaccess 文件存在且内容正确,只要 AllowOverride 不是 All,Apache 就会直接跳过它:
将 WCAG 2 AA 无障碍标准应用于设计系统、UI 组件和网页——通过可运行的验证器进行对比度计算,采用设计 token 模式使颜色天生可访问,设定排版和焦点状态规则,并提供语义检查清单。适用于构建或审查 UI。
- 找到站点对应的
块(比如 ) - 里面必须包含:AllowOverride All(不能是 FileInfo、AuthConfig 或 None)
- Apache 2.4+ 还必须有:Require all granted
- 改完配置后执行「重载」而非「重启」,否则改动可能不生效
文件位置或命名不对
ThinkPHP 的 .htaccess 必须放在 public/ 目录下,不是项目根目录:
立即学习“PHP免费学习笔记(深入)”;
- 路径应为:/public/.htaccess
- 文件名必须严格小写,.htaccess(不是 .Htaccess、HTACCESS 或 .htaccess.txt)
- Windows 资源管理器默认隐藏扩展名,建议用 VS Code 或 Notepad++ 新建并另存为,编码选 UTF-8 无 BOM
服务器类型不匹配
如果实际用的是 IIS、Nginx 或 phpStudy 的 IIS 模式,.htaccess 完全无效:
- IIS 需安装 URL Rewrite Module,并配置 web.config
- Nginx 不识别 .htaccess,必须在 server 块中写 try_files 或 if 规则
- phpStudy 默认走 httpd.ini 路线(尤其旧版),此时应配 httpd.ini 而非 .htaccess
- 上传前先确认服务器环境类型,别把 Apache 的配置直接扔到 IIS 上


















