【发布时间】:2017-02-23 07:29:32
【问题描述】:
这个问题的版本已经发布了很多次,但到目前为止我在这个网站上找到的解决方案都没有奏效。我正在尝试从 文件 重定向,而不是网页。我实际上需要知道这是否可能,因为我了解到 PHP 无法做到这一点。这是我之前提出的问题的答案:
Web 服务器将首先检查它是否存在,如果存在,它将立即提供该文件。它不经过任何 PHP 代码。因此,您不能编写任何 PHP 代码来拦截该请求并阻止它。
我们网站上有一个路径为/downloads/ 的文件夹,其中包含我们不希望任何人下载的文件。
我想在我们的主 JavaScript 文件中放置一个脚本,上面写着:
-
如果文件是
/downloads/ -
如果用户来自推荐人
allowed_domain.com,则允许访问/downloads/中的文件 - 否则重定向到首页或404
我的尝试(没有成功)
if (top.location.pathname === '/downloads/private.zip') {
if (document.referrer !== "http://www.allowed_domain.com") {
document.location.path = "/downloads/private.zip";
}
else {
document.location.path = "/404";
}
}
约束
我不能使用 .htaccess。我们的托管服务提供商运行的是 Nginx,而不是 Apache。我尝试过使用 Nginx 配置代码,但我必须将其发送给他们实施,但它不起作用,他们不会帮助我。
是的,我知道这是一个超级、超级不安全的限制访问解决方案。我的公司正在研究一个更正式的解决方案,但在那之前,我需要实施一些临时措施来阻止那些缺乏计算机知识或没有动力绕过重定向的用户,这几乎是我最后的选择。
【问题讨论】:
-
谁告诉你引用的声明?这是完全错误的,当然您可以配置您的 Web 服务器以使用 PHP 而不是直接提供文件。您需要在服务器端执行此操作,文档下载不涉及客户端 JavaScript。
-
@Bergi 您是在谈论将文件放在
public_html之外并通过PHP 传递吗?因为我很想这样做,但我的托管服务提供商不支持它。 -
是的,类似的东西,但是我很难相信 nginx 不会支持这个(除非它是您的托管商对您的付款类别施加的任意限制)
-
@JesseRogers 你能更改目录名称或移动文件吗?如果是这样,让 PHP 通过
index.php?file=myfile.zip传递这些文件,同时永远不要泄露目录。 -
@Bergi 我不认为是 Nginx 不支持它,而是托管我网站的网络服务器的公司不允许它。
标签: javascript redirect