跳到内容

⚙️ .htaccess 生成器

通过勾选即可实时生成生产级 .htaccess:HTTPS 重定向、HSTS、gzip / brotli、缓存、敏感文件拒绝、WordPress 永久链接等。

完全免费 无需注册 浏览器内完成 5 种语言 深色模式

🔒 关于隐私

🧩 选择功能

📄 生成的 .htaccess


        
    

📖 常见的坑

把 HTTPS 跳转、www 统一、PHP 版本指定、缓存控制、安全响应头、访问限制等组合起来生成 .htaccess。处理全部在浏览器内完成。.htaccess 有一个其他配置文件所没有的危险性质——写错一行,该目录以下的全部内容会立刻返回 500 错误而且错误页面不会告诉你原因。如果你的管理后台也在同一目录树内,你就无法从那里修复——动手编辑之前,请先确认你有退路。

情形 会发生什么 怎么处理
一行写错,整站变成 500 .htaccess 在每一次请求时都会被重新读取,因此错误从你保存的那一刻起就影响所有请求。最常见的原因是使用了未加载模块的指令——mod_headers 被禁用的环境里写 Header set ...,Apache 无法理解那一行,于是返回 500 Internal Server Error。麻烦之处在于,这不是「语法正确但不生效」,而是「配置读不了,所以全部停摆」你看到的只有一个通用错误页上面不会写明是第几行、哪里不对——那些信息只存在于服务器的错误日志里在看不到日志的共享主机上,定位原因就变成了逐条排除。 依赖模块的指令请务必用 <IfModule> 包起来。写在 <IfModule mod_headers.c> 里,没有该模块的环境只会直接忽略它,而不会变成 500——仅此一条就能挡掉大半事故。就流程而言,编辑前务必留一份副本,并且通过「站点 500 时仍然可用的通道」来编辑,比如 SSH 或 FTP——从 WordPress 后台去改它,等于在拆自己站着的地板而且要小步添加,每加一点就在浏览器里确认一次——一口气加了十行然后 500,你就只能靠二分法去找是哪一行如果是共享主机,请事先确认自己能否查看错误日志,真出事时才不至于束手无策。
重定向死循环 / 301 撤不回来 把强制 HTTPS 与 www 统一写在一起,取决于条件的先后顺序,会形成无限循环。尤其是前面挂着负载均衡或 CDN 的架构请求到达服务器时永远是 HTTP,于是 %{HTTPS} 一直是 off重定向便永远重复下去——症状就是 ERR_TOO_MANY_REDIRECTS而 301 的性质又雪上加霜301 意为「永久」,浏览器会强力缓存,即便你改好了配置,浏览器仍会继续执行那条旧的重定向结果就是「改了却还是坏的」,于是你继续折腾配置,把事情弄得更糟——这是这类问题里最耗时间的模式 若处在代理之后,请改看 %{HTTP:X-Forwarded-Proto}写成 RewriteCond %{HTTP:X-Forwarded-Proto} !https,即使经过 CDN 也能正确判定。而且验证请一律用 curl -I 而不是浏览器——curl 不缓存重定向,你看到的永远是当前配置的结果搭建期间先用 302,确认行为符合预期后再改成 301——仅这一个顺序,就能避开几乎所有由缓存引起的事故如果已经发出了错误的 301,唯一的补救是再返回一个指向正确目标的 301——别人浏览器里的缓存,你这边是清不掉的另外,重定向规则请集中在一个地方——一旦散落在多个 .htaccess 与应用配置里,死循环的成因就再也追不出来了
子目录的 .htaccess 会抵消父级规则 .htaccess 是按层级生效的,但唯有 mod_rewrite 的规则是「替换」而不是「继承」只要你在子目录里写下一条 RewriteRule,父目录的重写规则在该目录下就立刻失效——强制 HTTPS 和 www 统一都会唯独在那里失灵难以察觉的原因是,其他指令(认证、缓存、响应头)照常继承,于是形成「只有一部分被继承」这种反直觉的行为。与之相关,子目录有时需要指定 RewriteBase忘了写,相对路径就会按父级路径解析,导致 404 或死循环 条件允许的话,干脆不要用 .htaccess,把配置写进服务器主配置。VPS 或独立服务器可以写在 <Directory> 块里——这样也更快,因为省掉了每次请求都去查找并读取该文件的开销(设为 AllowOverride None 后,Apache 连找都不会去找)。如果共享主机只允许用 .htaccess,请把重写规则集中在父级的一个文件里,并避免在子目录里放任何 RewriteRule确实需要时,写 RewriteOptions Inherit 可以继承父级规则,但它会改变生效顺序,届时请务必把每一种路径都实际请求一遍来确认

安全响应头并不是加上就安全了。X-Frame-OptionsContent-Security-Policy 只是封堵特定的攻击手法对应用自身的漏洞毫无作用——扫描工具的分数上去了,和真的变安全了,是两回事。尤其是 Content-Security-Policy,配错了会让你自家的 JavaScript 跑不起来——请先用 Content-Security-Policy-Report-Only 观察上报情况,再切换到真正生效的那一个。另外,.htaccess 里的访问限制只在「该文件经由 Apache 分发时」才有效——在由 nginx 在前面直接返回静态文件的架构里,.htaccess 根本不会被读取把机密文件放在公开目录之外才是正道靠访问限制去遮掩只是退而求其次还有一点容易被忘记:.htaccess 本身也请纳入版本管理——一份没人说得清「何时由谁加了什么」的配置文件,早晚会变成谁都不敢碰的东西。

📖 使用方法

  1. 1
    选择功能
    在左侧勾选所需功能。右侧实时显示预览。
  2. 2
    输入域名
    若启用 www 规范化,请输入域名。仅 HTTPS 重定向无需输入。
  3. 3
    复制或下载
    使用右上方按钮复制到剪贴板或下载为文件。上传前请检查内容。
  4. 4
    上传到服务器
    将文件作为 .htaccess 放到文档根目录(public_html / htdocs / public)。请先备份已有文件。

❓ 常见问题

.htaccess 在 Apache 以外可用吗?
不可。.htaccess 仅限 Apache。LiteSpeed 兼容,但 nginx 需 server 块,请使用我们的 nginx 生成器。
出现 500 错误怎么办?
可能由未启用模块引起。已用 IfModule 包裹通常安全;若仍出错,逐块注释排查并查看 Apache error_log。
共享主机(Xserver / Sakura)可用吗?
可以。大多数共享主机支持 .htaccess 与 AddHandler;部分主机需在控制面板启用 mod_deflate / mod_expires。
🐛 此工具出现问题了吗?

免费、无需注册。仅提供复现步骤也有帮助。报告将直接发送给运营者并用于改进。

※ 为复现问题,浏览器信息 (UA / 屏幕 / 语言 / URL) 将自动发送