.htaccess问题:无法限制特定文件扩展名的访问如何解决?
解决Apache 2.4下限制WordPress上传目录字体文件访问的问题
原方案无效原因
- 方案一:逻辑完全错误,配置的是允许所有访问而非拒绝,且使用了Apache 2.2的旧指令
Order Deny,Allow,在2.4版本中已被Require指令替代。 - 方案二:仅针对
2022/10和2022/11两个特定子目录,未覆盖uploads下所有子目录,范围太窄。
正确解决方案
方法一:在uploads目录下创建.htaccess(推荐)
直接在wp-content/uploads目录中新建.htaccess文件,写入以下规则,该规则会自动作用于当前目录及所有子目录:
<FilesMatch "\.(otf|ttf|woff|woff2)$"> Require all denied </FilesMatch>
方法二:在根目录.htaccess中添加全局规则
如果不想单独在uploads目录下创建文件,可在WordPress根目录的.htaccess中(位于RewriteEngine On规则前后均可)添加:
RedirectMatch 403 ^/wp-content/uploads/.+\.(otf|ttf|woff|woff2)$ [F,L,NC]
[F]:强制返回403 Forbidden状态码[L]:停止处理后续规则[NC]:忽略大小写匹配(确保.OTF、.Ttf等格式也被拦截)
验证与注意事项
- 保存配置后,重启Apache服务(部分环境无需重启,但重启可确保配置生效)。
- 清除浏览器缓存,直接访问目标字体文件的URL,确认返回403状态码。
- 确保Apache已启用
mod_authz_core(Require指令依赖)和mod_rewrite(RedirectMatch指令依赖)模块,可通过apache2ctl -M命令查看已启用模块。
内容的提问来源于stack exchange,提问作者etrafart
相关产品推荐
相关产品推荐

