PDF文件保护免受外部访问.只能访问经过身份验证的用户.WordPress上传目录

vsa*_*zis 7 pdf indexing wordpress nginx hotlinking

我正在运行一个网站,我想保护WordPress上传文件夹中的所有PDF文件免受外部访问和热链接.

我已经在使用用户身份验证来保护附加到这些文件的帖子,但用户身份验证不保护PDF文件的直接链接或从搜索引擎索引这些文件.

我宁愿不更改默认上传目录,因为PDF随机文件名超过1000并附加到具有不同日期的各个帖子.

该站点使用Nginx,php5-fpm和MariaDB托管在Debian VPS上.

到目前为止,我测试了以下内容:

site.conf 1

location /wp-content/uploads/ {
    location ~* \.(pdf)$ {
        valid_referers blocked example.com *.example.com;
        if ($invalid_referer) {
            return 301 https://example.com/services/login-error.html;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

site.conf 2

location /wp-content/uploads/ {
    location ~* \.(pdf)$ {
        valid_referers blocked example.com *.example.com;
        if ($invalid_referer) {
            deny all;
            return 403;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,上述配置都没有按预期工作.它们会阻止外部访问,但它们也会将经过身份验证的用户重定向到403或301错误.

任何帮助或建议将不胜感激.

谢谢.

vsa*_*zis 0

因此,在尝试了所有答案和更多内容后,我最终发现,虽然 site.conf #1 正在与登录用户一起使用 URL 以 https:// 开头的 PDF 文件,但它无法与以前的用户一起使用。过去 URL 中包含 http:// 的上传内容。我必须将 wp_posts 表更新为https://example.com/wp-content/uploads/,它最终(仅)保护 PDF 文件不被直接访问。

当然,这是一个粗略的解决方法,请记住,此方法还将保护公开可用的 PDF 文件。

感谢您的所有帮助。