Apache .htaccess 生成器
生成 Apache .htaccess 规则:强制 HTTPS、添加或去掉 www、301 重定向、错误页面、gzip、浏览器缓存、安全响应头和隐藏文件屏蔽。
状态码可以是 301、302、303、307、308 或 410(已删除)。新路径也可以是完整 URL。
<IfModule mod_rewrite.c>
RewriteEngine On
# Redirect HTTP to HTTPS
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>
# Redirects (mod_alias)
Redirect 301 /old-page /new-page
Redirect 301 /blog/2019 /blog
# Custom error pages
ErrorDocument 404 /404.html
# Disable directory listings
Options -Indexes
# Block access to hidden files such as .env and .git
<FilesMatch "^\.">
Require all denied
</FilesMatch>
RedirectMatch 404 /\.git
# Security headers
<IfModule mod_headers.c>
Header always set X-Content-Type-Options "nosniff"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
</IfModule>
# Compress text responses
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript
AddOutputFilterByType DEFLATE application/javascript application/json application/xml application/rss+xml
AddOutputFilterByType DEFLATE image/svg+xml font/ttf font/otf
</IfModule>
# Browser caching
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 month"
ExpiresByType text/html "access plus 0 seconds"
ExpiresByType text/css "access plus 1 year"
ExpiresByType application/javascript "access plus 1 year"
ExpiresByType text/javascript "access plus 1 year"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType image/webp "access plus 1 year"
ExpiresByType image/avif "access plus 1 year"
ExpiresByType image/svg+xml "access plus 1 year"
ExpiresByType image/x-icon "access plus 1 year"
ExpiresByType font/woff2 "access plus 1 year"
</IfModule>
什么是 .htaccess 生成器?
这个工具为 Apache 2.4 生成可直接使用的 .htaccess 文件。勾选你需要的功能:HTTPS 重定向、www 或非 www 的规范主机、HSTS、关闭目录列表、隐藏文件保护、gzip 压缩、浏览器缓存、基本安全响应头,并添加你自己的 301/302/410 重定向和自定义错误页面。
如何使用 .htaccess 生成器
- 勾选需要的选项,并选择如何处理 www。
- 按
/old-path /new-path的格式输入重定向,后面可选地跟状态码(301、302、303、307、308 或 410)。 - 输入自定义 404 和 500 页面的路径。
- 复制或下载结果为 .htaccess,并先在预发布服务器上测试。
示例
Force HTTPS, remove www, redirect /old-page → /new-page
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [L,R=301]
Redirect 301 /old-page /new-page 强制 HTTPS、去掉 www,并把 /old-page 重定向到 /new-page 时生成的规则。
何时使用 .htaccess 生成器
适合无法编辑主服务器配置的共享主机或 Apache 服务器。在 Nginx、LiteSpeed 自带设置、Cloudflare 或 CDN 上,请使用它们各自的配置,Nginx 会完全忽略 .htaccess。语法错误会导致整个目录返回 HTTP 500,所以务必先测试。
.htaccess 生成器 的工作原理
HTTPS 和 www 规则使用 <IfModule mod_rewrite.c> 内的 mod_rewrite(RewriteCond %{HTTPS} off 和主机条件);强制 HTTPS 时,www 重定向直接使用 https,避免出现两跳链。路径重定向使用 mod_alias 的 Redirect 行(410 使用 Redirect gone)。压缩使用 mod_deflate,缓存使用 mod_expires,对静态资源设置较长的有效期,对 HTML 不缓存,响应头使用 mod_headers 的 Header always set。隐藏文件通过 <FilesMatch "^\."> 和 RedirectMatch 404 /\.git 拒绝访问。
常见用例
- 安装证书后,强制使用 HTTPS 和单一的非 www 主机。
- 网站改版后重定向旧 URL。
- 开启压缩和缓存,加快共享主机上的 WordPress 站点。
- 阻止访问 .env 和 .git 文件。
常见问题
为什么上传 .htaccess 后出现 500 错误?
通常是所需模块未启用,或 AllowOverride 不允许某条指令。请查看 Apache 错误日志。
应该启用 HSTS 吗?
只有在整个站点和所有子域名都能通过 HTTPS 正常工作之后才启用,因为在 max-age 期间,浏览器会拒绝纯 HTTP。
.htaccess 在 Nginx 上有效吗?
无效。Nginx 不读取 .htaccess;规则必须转写到 server 块中。