.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
的请求(没有尾部斜杠)- 尽管这无论如何都不是严格有效的请求。
我的目标是拒绝访问所有点文件,例如 .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
的请求(没有尾部斜杠)- 尽管这无论如何都不是严格有效的请求。