.htaccess 拒绝点文件但允许 letsencrypt

.htaccess deny dot-files but allow letsencrypt

我的目标是拒绝访问所有点文件,例如 .htaccess.env 并发回 404,但允许访问 letsencrypt 文件夹 .well-known

RewriteEngine On
RewriteRule "(^|/)\.(?!well-known)" - [F]
RedirectMatch 404 /\..*$

非常感谢任何关于如何实现这一点的提示 最佳内窥镜

请尝试以下操作:

RewriteEngine On

RewriteRule (?:^|/)\.[^/]+$ - [R=404]

这将为任何以点开头的 file(或者更确切地说,最后一个 URL-path 段)提供 404。但它将允许 .well-known/ - 因为这是一个目录,所以也至少有一个斜杠 + 文件名作为后缀。

更新:修改了正则表达式,使其匹配最后一个路径段开头的点,而不是最后一个路径段中的任何地方!

请注意,F 标志响应 403 Forbidden,而不是请求的 404。


或者,您可以使用 <Files>(或 <FilesMatch>)容器,它只匹配“文件”。例如:

<Files ".*">
    # 404 Not Found
    Redirect 404 /

    # OR... 403 Forbidden
    #Require all denied
</Files>

尽管这也阻止了对 /.well-known 的请求(没有尾部斜杠)- 尽管这无论如何都不是严格有效的请求。