regex - .htaccess 拒绝点文件但允许letsencrypt
问题描述
我的目标是拒绝访问所有点文件,例如.htaccess
,.env
并发送回 404,但允许.well-known
访问letsencrypt-folder
RewriteEngine On
RewriteRule "(^|/)\.(?!well-known)" - [F]
RedirectMatch 404 /\..*$
任何关于如何实现这一点的提示都非常感谢 Best endo
解决方案
请尝试以下操作:
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
(无尾随斜杠)的请求——尽管这并不是严格意义上的有效请求。
推荐阅读
- clojure - 宏扩展 clojure.core/let 的语法错误
- javascript - 在不更改标记大小的情况下使用绘图代理更改跟踪标记的颜色
- powershell - 使用 IISAdministraton PowerShell 模块获取 IIS applicationHost.config LogFile 设置
- ios - Swift Xcode 10.1 中的系统函数
- delphi - 如何防止Delphi 7添加到uses子句
- python - 使用多处理的文件处理 - python
- python - 在 Pycharm 中安装 tts-watson 时出错
- c++ - 确定模板中结构或元组的成员偏移量
- php - 当用户提供任意 URL 参数时如何防止注入?
- java - 你如何在java中的rocksDB中写入列数据?