mod_rewrite模块需在httpd.conf中显式启用并重启Apache;多端口虚拟主机须各自配置AllowOverride All、Require all granted和Options FollowSymLinks,且.htaccess须置于对应DocumentRoot下、用UTF-8无BOM编码。

确认 mod_rewrite 模块已在全局启用
多端口站点(如 :8080、:8000)本身不改变模块加载逻辑,mod_rewrite 仍需在 Apache 主配置中显式启用。否则所有端口下的虚拟主机都无效:
- 打开
XAMPPpacheconfhttpd.conf - 搜索
#LoadModule rewrite_module modules/mod_rewrite.so,删掉行首的# - 保存后必须通过 XAMPP Control Panel 重启 Apache,仅刷新页面没用
验证方式:新建一个 phpinfo.php,内容为 ,浏览器访问后 Ctrl+F 搜 rewrite_module,出现在 “Loaded Modules” 列表里才算成功。
每个 必须单独配 AllowOverride All
AllowOverride AllXAMPP 默认只对 htdocs 根目录设了宽松权限,而多端口站点通常用 httpd-vhosts.conf 单独定义,若漏配 AllowOverride,.htaccess 就会被完全忽略——这是伪静态失效最常见原因。
- 编辑
XAMPPpacheconfextrahttpd-vhosts.conf - 在每个
块内部,添加对应的区块(路径必须和DocumentRoot一致) - 确保包含这三行:
AllowOverride All、Require all granted、Options FollowSymLinks - Windows 路径中用正斜杠
/或双反斜杠\,单反斜杠可能被转义导致解析失败
.htaccess 文件位置和编码必须严格匹配站点根目录
多端口站点往往指向不同物理路径(比如 htdocs/blog 和 htdocs/api),.htaccess 必须放在各自 DocumentRoot 目录下,且不能有隐藏扩展名或 BOM 头:
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
- 用记事本保存时,文件类型选“所有文件”,编码选“UTF-8 无 BOM”或“ANSI”(不要用 UTF-8 with BOM)
- 文件名必须是纯
.htaccess,Windows 资源管理器默认隐藏扩展名,容易误存为.htaccess.txt - 路径中含中文或空格会导致 Apache 拒绝读取,测试阶段一律用纯英文路径,例如
htdocs/myapp - 如果站点不在根目录(如端口
:8000对应htdocs/shop),规则里必须加RewriteBase /shop/,否则^product/(d+)$会匹配失败
调试优先看 error.log,而不是浏览器 404
浏览器只显示结果(404、500),真正原因藏在日志里。多端口站点共用同一套 Apache 实例,错误日志统一在 XAMPPpachelogserror.log:
- 启动 Apache 后立刻访问一次伪静态 URL(如
http://localhost:8080/test) - 立即打开
error.log,搜索关键词:rewrite、htaccess、Invalid command、not allowed here - 出现
Invalid command 'RewriteEngine'→ 模块未启用;not allowed here→AllowOverride配错;File does not exist→RewriteBase缺失或路径不匹配
多个端口共享同一套 rewrite 引擎,但每个 VirtualHost 的权限、路径、基础规则相互隔离——最容易被忽略的是:你改了 httpd.conf,却忘了在 httpd-vhosts.conf 里给新端口配 。










