首页 > 解决方案 > .htaccess 拒绝点文件但允许letsencrypt

问题描述

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

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

任何关于如何实现这一点的提示都非常感谢 Best endo

标签: regexapache.htaccessredirecturl-rewriting

解决方案


请尝试以下操作:

RewriteEngine On

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

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

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

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


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

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

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

尽管这也确实阻止了对/.well-known(无尾随斜杠)的请求——尽管这并不是严格意义上的有效请求。


推荐阅读