本文目录
什么是 .htaccess?
.htaccess(超文本访问,hypertext access)文件是 Apache Web 服务器的目录级配置文件。它允许你在不修改主服务器配置的情况下,按目录覆盖服务器设置。常见用途包括 URL 重定向、访问控制、缓存规则和自定义错误页面。
Apache 会在每次请求所在目录时读取 .htaccess 文件,因此更改无需重启服务器即可立即生效。这种便利性使它成为在缺乏主 httpd.conf 访问权限的共享主机环境中配置 Apache 的标准方式。
.htaccess 配置的工作原理
Apache 使用其模块系统来处理 .htaccess 指令,其中 mod_rewrite 是最常用于 URL 操作的模块。
- URL 重写与重定向——mod_rewrite 规则使用正则表达式转换 URL,可实现整洁的 URL、强制 HTTPS 以及域名重定向
- 缓存与压缩——使用 mod_expires 设置浏览器缓存头,并通过 mod_deflate 启用 GZIP 压缩,以提升页面加载速度
- 访问控制——按 IP 地址限制访问、使用 .htpasswd 文件要求身份验证,或屏蔽特定的用户代理和爬虫
免费试用 —— 无需注册
生成 .htaccess 规则 →何时使用 .htaccess 生成器
手动编写 .htaccess 规则需要掌握 Apache 指令语法和正则表达式。生成器可以简化常见配置。
- 强制 HTTPS——用一条规则将所有 HTTP 流量重定向到 HTTPS,确保整个站点的连接安全
- 防盗链——通过屏蔽带有外部来源(referrer)头的请求,防止其他站点嵌入你的图片和文件
- 自定义错误页面——定义带有品牌风格的 404 和 500 错误页面,取代 Apache 默认页面,改善出错时的用户体验
常见问题
.htaccess 和 httpd.conf 有什么区别?
httpd.conf 是 Apache 的主配置文件,在服务器启动时加载一次。.htaccess 文件则在每次请求时被读取,且只作用于其所在目录。httpd.conf 更快,因为它避免了每次请求都读取文件;但当你无法直接修改服务器配置(例如在共享主机上)时,.htaccess 就必不可少。
.htaccess 会影响服务器性能吗?
会有轻微影响。Apache 必须在每次请求时检查并读取 URL 路径中每个目录里的 .htaccess 文件。对于拥有服务器访问权限的高流量站点,将指令移入 httpd.conf 并禁用 AllowOverride 即可消除这一开销。对大多数站点而言,其影响可以忽略不计。
.htaccess 在 Nginx 中的等价物是什么?
Nginx 不支持 .htaccess 文件。所有配置都放在 nginx.conf 或站点专属配置文件的 server 块中。Nginx 仅在收到明确的 reload 命令时才重新加载配置,这种方式效率更高,但每次更改都需要服务器访问权限。