X-Sendfile 适用于所有文件夹,而不仅仅是 XSendFilePath

X-Sendfile works for all folder and not just XSendFilePath

我的 xsendfile 模块正在工作,并且正在使用 X-Sendfile header 提供文件。但是不知何故,来自任何文件夹的文件都得到了服务。 我如何限制它以便我只能对特定文件夹使用 X-sendfile headers? 我已经尝试设置 XSendFilePath,即使我使用 X-Sendfile header.

也会发送该文件夹外的文件

这是我的虚拟主机部分中的内容 XSendFile 开启 XSendFilePath /home/domain/public_html/files

如果我使用 php 从 /home/domain/public_html/abc 使用 X-Sendfile 发送文件。它被发送没有任何问题。我不想这样。我只希望 X-Sendfile 用于 /home/domain/public_html/files.

中的文件

尝试使用 XSendFilePath 指令

XSendFilePath allow you to add additional paths to some kind of white list. All files within these paths are allowed to get served through mod_xsendfile.

重要的是 XSendFilePath 指令位于与您正在使用的 url 相关的 apache 配置文件上下文中,例如不在虚拟主机部分内,由于您的实际虚拟主机(在您的 url 中)而无法解释。 可能在大多数配置中,XSendFilePath 用于 apache 配置文件的主要部分,而不是用于虚拟主机、dolmain 等特定上下文。 这有帮助吗?

XSendFilePath /tmp
<VirtualHost *>
 ServerName www.someserver.com
 XSendFilePath /home/userxyz
</VirtualHost>

(XSendFilePath 的第一次出现 -> 在全球范围内有效,第二次出现仅当您的 php 生成 XSendFile header 的脚本是从域 www.someserver.com 中调用时才有效)