xampp默认不启用mod_rewrite,必须取消httpd.conf中loadmodule rewrite_module modules/mod_rewrite.so的注释、将对应directory区块的allowoverride none改为all,并重启apache才能生效。

XAMPP 默认不启用 mod_rewrite,光改 .htaccess 没用,必须手动编辑 httpd.conf 两处关键位置并重启 Apache。
确认并取消 LoadModule rewrite_module 的注释
这一步是基础,但极易出错。直接打开 XAMPP\apache\conf\httpd.conf,搜索:LoadModule rewrite_module modules/mod_rewrite.so。
- 如果该行开头有
#,删掉它;如果整行被注释(比如### LoadModule...),只删最前面那个#,别动其他井号 - 严禁写成
rewrite_module.so——模块名不含扩展名,否则 Apache 启动失败,报错Invalid module name - 严禁重复添加该行——XAMPP 自带一行,手动再加会导致
Cannot load more than one instance - 路径必须是
modules/mod_rewrite.so(Windows 下是.so,不是.dll)
把对应 <directory></directory> 块里的 AllowOverride None 改成 All
模块加载了,但 Apache 还是会忽略 .htaccess,因为默认禁止覆盖配置。找到你项目实际所在的 <directory></directory> 区块(通常是 <directory></directory> 或虚拟主机里自定义的 DocumentRoot 路径)。
XAMPP 8.0.30 是一款免费、开源的跨平台 Web 服务器集成包,专为快速搭建本地 PHP 开发环境而设计。该版本核心组件包括:Apache 2.4.56、MySQL 8.0.33、PHP 8.0.30、phpMyAdmin 5.2.1 等。它支持 Windows、Linux 和 macOS 系统,可让开发者在个人电脑上轻松模拟服务器环境,无需复杂配置即可运行 WordPress、Thin
- 区块内必须包含
AllowOverride All;写成AllowOverride FileInfo可能不够,mod_rewrite需要FileInfo+Indexes等权限,All最稳妥 - 如果用了多端口虚拟主机(
<virtualhost></virtualhost>),AllowOverride All必须放在该<virtualhost></virtualhost>内部的<directory></directory>块里,不能只改全局<directory></directory> - 顺手检查是否漏了
Options FollowSymLinks——ThinkPHP 或 WordPress 在新版 XAMPP 上常因缺这个报 403
重启 Apache 后验证是否真正生效
改完不重启 = 白改。必须通过 XAMPP Control Panel 点击 Apache → Stop → Start,不能只刷新页面。
- 新建一个
phpinfo.php放在htdocs下,内容为<?php phpinfo(); ?>,访问后Ctrl+F搜mod_rewrite,出现在 “Loaded Modules” 列表才算模块加载成功 - 再建一个
test.htaccess(注意不是.htaccess),内容写garbage_text,如果访问时没报 500 错误,说明AllowOverride实际仍是None,配置没生效 - Windows 下务必确认
.htaccess文件名正确(无扩展名、无隐藏后缀),编码为 UTF-8 无 BOM
最容易被忽略的是:虚拟主机配置里没单独配 <directory></directory> 块,或者 AllowOverride All 写在了错误的作用域下——哪怕 mod_rewrite 已加载,规则也压根不会执行。










