Apache服务器:合并.htaccess中多文件访问拒绝命令的方法
如何在.htaccess中合并多个文件的访问拒绝规则?
当然可以!完全不用重复写一堆一模一样的拒绝规则——不管是2个文件还是几十上百个,都能优雅地把规则合并到.htaccess里,下面给你两种最实用的方法:
方法1:使用<FilesMatch>(正则匹配,兼容所有Apache版本)
这个方法用正则表达式批量匹配文件名,兼容性最好,适合所有Apache版本。比如你要禁止access.log和error.log的访问,可以这么写:
<FilesMatch "^(access|error)\.log$"> # Apache 2.4+ 推荐写法 Require all denied # 如果是Apache 2.2及以下,替换成下面两行: # Order Allow,Deny # Deny from all </FilesMatch>
规则细节说明:
^和$是正则的起止标记,确保精准匹配完整文件名,不会误匹配类似access.log.bak的衍生文件(access|error)表示匹配括号里的任意一个文件名前缀,新增文件只需用|分隔追加即可,比如^(access|error|secret|private)\.log$就能匹配4个目标文件\.是转义后的点号(正则里的.是通配符,必须转义才能匹配真实的文件名后缀点)
方法2:使用<Files>多文件匹配(Apache 2.4+专属)
如果你的服务器是Apache 2.4及以上版本,可以直接用<Files>指令同时指定多个文件名,写法更直观易懂:
<Files "access.log" "error.log"> Require all denied </Files>
要添加更多禁止访问的文件?直接在引号里追加就行:
<Files "access.log" "error.log" "config.ini" "private.txt"> Require all denied </Files>
额外提醒
- 若你的Apache版本是2.2及以下,
<Files>多文件写法不生效,建议优先用FilesMatch方案 - 务必确认服务器虚拟主机配置里的
AllowOverride设置为All(或至少包含Limit权限),否则.htaccess里的规则不会被执行
内容的提问来源于stack exchange,提问作者pjk_ok
相关产品推荐
相关产品推荐

