windows下找不到.htaccess文件是因为它被系统隐藏,需在资源管理器中启用“显示隐藏的项目”并取消勾选“隐藏受保护的操作系统文件”;若apache不读取,需检查httpd.conf中accessfilename是否为.htaccess、对应directory区块的allowoverride是否设为all,并确保mod_rewrite模块已启用且文件编码为utf-8 without bom。

Windows 下找不到 .htaccess 文件,是因为它被系统隐藏了
Windows 资源管理器默认不显示以 . 开头的文件,.htaccess 就属于这类隐藏文件。不是它不存在,而是你看不见。
要让它显示出来,必须手动开启「显示隐藏的文件和文件夹」:
- 打开任意文件夹 → 顶部菜单「查看」→ 勾选「隐藏的项目」
- 或者按快捷键 Ctrl + H(部分系统需先点「查看」再按)
- 确认「隐藏受保护的操作系统文件」选项是 未勾选 状态(否则仍看不到)
启用后,去你的 WordPress 根目录(比如 C:/xampp/htdocs/myblog),就能看到 .htaccess(如果已存在)或直接新建它。
Apache 不读 .htaccess?检查 httpd.conf 的 AccessFileName 和 AllowOverride
即使文件存在且可见,Apache 也可能完全忽略它——常见原因是配置没对。
打开 C:/xampp/apache/conf/httpd.conf,重点查两处:
-
AccessFileName:确保这行没被注释,且值是.htaccess(不是htaccess.txt或其他)
→ 正确写法:AccessFileName .htaccess -
AllowOverride:在对应网站目录的<directory></directory>区块里,必须设为All(不能是None或空)
→ 示例:<directory> AllowOverride All Require all granted </directory>
改完保存,**必须重启 Apache**(通过 XAMPP Control Panel),否则无效。
手动创建 .htaccess 文件时,编码和内容必须严格合规
Windows 记事本默认保存为 ANSI 或 UTF-8 with BOM,这两种都会导致 Apache 报错:Invalid command ''(那个小方块就是 BOM 字节)。
对设计或页面进行 WCAG 2.1 AA 无障碍审计。触发关键词:“audit accessibility”、 “check a11y”、 “is this accessible?” 或在审查设计时使用。
安全做法只有两种:
- 用 VS Code / Sublime Text / Notepad++ 新建文件 → 保存为
UTF-8 without BOM→ 文件名填.htaccess(注意开头的点) - 或先存为
htaccess.txt,上传/放好后再用命令行重命名:ren htaccess.txt .htaccess
内容必须用 WordPress 官方标准模板,尤其注意 RewriteBase 路径:
# BEGIN WordPress
<ifmodule mod_rewrite.c>
RewriteEngine On
RewriteBase /myblog/
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /myblog/index.php [L]
</ifmodule>
# END WordPress
如果 WordPress 装在子目录(如 htdocs/myblog),RewriteBase 必须带该路径并以 / 结尾;根目录则用 RewriteBase /。
mod_rewrite 模块未启用是伪静态失效的底层原因
哪怕 .htaccess 放对位置、编码正确、AllowOverride All 也开了,只要 mod_rewrite 没启用,所有 RewriteRule 都不会执行。
验证和启用步骤很直接:
- 打开
C:/xampp/apache/conf/httpd.conf - 搜索
mod_rewrite.so,找到这行:#LoadModule rewrite_module modules/mod_rewrite.so - 删掉开头的
#,变成:LoadModule rewrite_module modules/mod_rewrite.so - 保存 → 重启 Apache
- 可加一行 PHP 测试:
<?php print_r(apache_get_modules()); ?>,看输出里有没有rewrite_module
这个模块一旦禁用,.htaccess 里的重写规则就彻底失效,但其他指令(如 php_value)可能仍生效——所以现象容易误判。










