WordPress在XAMPP上伪静态失效的根本原因是未启用mod_rewrite模块且虚拟主机未设AllowOverride All;需修改httpd.conf启用模块、在httpd-vhosts.conf中配置Directory区块允许覆盖,并手动创建UTF-8无BOM的标准化.htaccess文件。

WordPress 在 XAMPP 上默认无法用伪静态,根本原因是 Apache 的 mod_rewrite 模块没启用,且虚拟主机未开启 AllowOverride All —— 光扔一个 .htaccess 文件进去,什么都改不了。
确认并启用 Apache 的 mod_rewrite 模块
这是所有伪静态的前提。XAMPP 默认是禁用该模块的:
- 打开
XAMPPpacheconfhttpd.conf - 搜索
#LoadModule rewrite_module modules/mod_rewrite.so,去掉行首的# - 保存后重启 Apache(通过 XAMPP Control Panel)
- 验证是否生效:在 PHP 文件中写
<?php print_r(apache_get_modules()); ?>,看输出里是否有rewrite_module
修改虚拟主机配置,允许 .htaccess 覆盖规则
XAMPP 默认的 DocumentRoot 目录(如 htdocs)权限太严,AllowOverride 设为 None 会导致 .htaccess 完全被忽略:
生产级WordPress REST API集成,用于管理文章、页面、媒体、WooCommerce产品、Elementor内容、SEO元数据、ACF及JetEngine字段
- 编辑
XAMPPpacheconfextrahttpd-vhosts.conf - 找到你 WordPress 所在的
<VirtualHost>块(或直接在<Directory "X:/xampp/htdocs/your-wordpress">区块内) - 确保包含这三行:
<Directory "X:/xampp/htdocs/your-wordpress"><br> AllowOverride All<br> Require all granted<br></Directory>
- 注意路径斜杠方向(Windows 下推荐正斜杠
/或双反斜杠\,避免单反斜杠被转义)
生成并放置正确的 .htaccess 文件
WordPress 后台「设置 → 固定链接」里点“保存”不会自动生成 .htaccess,除非目录可写;更稳妥的是手动创建:
- 在 WordPress 根目录(即含
wp-admin、wp-includes的文件夹)新建文件,命名为.htaccess(注意开头的点) - 内容必须以 WordPress 官方标准为准,不要复制网上过时的 RewriteRule:
# BEGIN WordPress<br><IfModule mod_rewrite.c><br>RewriteEngine On<br>RewriteBase /<br>RewriteRule ^index.php$ - [L]<br>RewriteCond %{REQUEST_FILENAME} !-f<br>RewriteCond %{REQUEST_FILENAME} !-d<br>RewriteRule . /index.php [L]<br></IfModule><br># END WordPress - 如果 WordPress 不在根目录(比如装在
htdocs/blog),要把RewriteBase /改成RewriteBase /blog/(结尾带斜杠) - 文件编码必须是 UTF-8 无 BOM,否则 Apache 可能报
Invalid command ''
常见 404 和 500 错误排查要点
即使规则写对,也可能因细节崩掉:
- 访问文章页返回 404:大概率是
AllowOverride没生效,或RewriteBase路径错误 - 整个站变 500 Internal Server Error:检查
.htaccess是否有不可见字符(尤其从网页复制来的内容)、mod_rewrite是否真加载成功、Apache 错误日志(XAMPPpachelogserror.log)里有没有Invalid command 'RewriteEngine' - 后台固定链接设置页提示“重写模块不可用”:说明
mod_rewrite未启用或 PHP 运行模式不是 Apache 模块(XAMPP 是 module 模式,排除 CGI/FastCGI 干扰) - 首页正常但分类页 404:检查 WordPress 后台「设置 → 固定链接」是否已点击“保存”,触发重写规则注册(部分主题和插件依赖此动作)
真正卡住的地方往往不在 .htaccess 本身,而在 Apache 配置层是否放行了它——很多人反复改文件却忘了改 httpd.conf 或 httpd-vhosts.conf,或者路径里的单反斜杠让 Windows 解析失败。多看一眼 error.log,比重装十次 WordPress 都管用。


















