如何通过 htaccess 阻止目录但允许我的站点通过 GET

How to block directory by htaccess but allow for my site over GET

我有 2 台服务器 - 网络服务器和数据服务器,我上传的所有文件都在哪里。 htaccess 中是否有任何选项可以阻止数据服务器中的所有访问,但允许来自该 Web 服务器的请求?

示例:Web 服务器:包含视频、音频...和数据服务器的门户,所有文件都上传到此处。我需要阻止直接从 "dataserver/file"(和所有子文件夹)下载(访问)所有这些文件,但我需要访问这些文件,例如通过 <video src="dataserver/file"></video>,这是从网络服务器调用的(男人来我站点并希望查看 movie/audio/...)

访问者的浏览器在解析 <video> 标签时会直接向您的数据服务器发出请求。您的网络服务器不涉及那里。但是,您想要防止的东西(在网络术语中称为 hot-linking)是可能的。

基本上,每个浏览器请求都附加了一个 referer 字段(只要可用),它让服务器知道用户来自哪个网站。例如,假设您打开浏览器并转到 google.com,Google 将收到没有 referer 的请求,因为这是您在该浏览器中打开的第一个站点选项卡

但是,当您搜索并单击 link 转到某个网站时,该服务器将收到您单击 [=] 的 Google 页面的完整 URL 45=] 访问作为 HTTP referer 请求传递给它的网站 header.

因此,在您的数据服务器上,您可以拥有一个 .htaccess 来确保客户仅通过检查他们的 referer header 来从您的网站发出视频请求秒。像

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_REFERER} !^http://(www\.)?webserver\.com/.*$ [NC]
RewriteRule \.(swf|flv|mp4)$ - [F,L]

这也会阻止用户在浏览器中输入视频 URL 以直接下载它。 hot-linkers 现在会收到 403 Forbidden 错误。

然而,这确实有可能破坏您的网站,因为人们浏览它时安装了某种隐私软件,该软件会剥离 referer 字段的每个浏览器请求。所以,这是你的trade-off。