.htaccess如何配置:拒绝所有点文件访问并返回404,同时允许Let's Encrypt的.well-known目录?
解决方案:屏蔽点文件但放行.well-known目录
我来帮你调整配置,刚好能实现你要的效果——拒绝所有点文件/目录(比如.htaccess、.env)并返回404状态码,同时让Let's Encrypt需要的.well-known目录可以正常访问。
先说说你现有配置的问题
你的当前配置有两个小问题:
- 第一条
RewriteRule用了[F]标记,这会返回403 Forbidden,但你需要的是404状态码 RedirectMatch和RewriteRule混用可能导致规则冲突(mod_alias和mod_rewrite的处理顺序不同),而且规则顺序也没优先放行例外
调整后的正确配置
直接用mod_rewrite就能搞定,把下面的代码放到你的.htaccess里:
RewriteEngine On # 优先放行.well-known目录下的所有请求,不再执行后续规则 RewriteRule ^\.well-known/ - [L] # 匹配所有其他点文件/目录,返回404并终止规则 RewriteRule "(^|/)\." - [R=404,L]
规则解释
RewriteEngine On:开启Apache的重写引擎,这是所有rewrite规则的前提- 第一条规则:匹配所有以
.well-known/开头的请求,[L]标记表示这是最后一条要执行的规则,直接放行该请求 - 第二条规则:匹配开头就有点(比如
.env)或者路径中间有点(比如sub/.htaccess)的请求,[R=404,L]表示返回404状态码,并且终止后续规则执行
额外注意事项
- 确保你的Apache服务器已经启用了
mod_rewrite模块(大部分主机默认是开启的) - 把这些规则放在
.htaccess文件的最开头,避免和其他已有的重写规则冲突 - 如果是在服务器全局配置文件(比如
httpd.conf)里配置,效果是一样的,不需要考虑.htaccess的目录继承问题
内容的提问来源于stack exchange,提问作者endo.anaconda
相关产品推荐
相关产品推荐

