我有2台服务器 - 网络服务器和数据服务器,这些都是我上传的文件。 htaccess中是否有任何选项可以阻止数据服务器中的所有访问,但允许来自该Web服务器的请求?
示例:Web服务器:包含视频,音频,...和数据服务器的门户,其中包含所有文件。我需要直接从&#34; dataserver / file&#34;中阻止下载(访问)所有这些文件。 (和所有子文件夹),但我需要访问这些文件,例如通过<video src="dataserver/file"></video>
,这是从网络服务器调用的(男人来到我的网站,想看电影/音频/...)
答案 0 :(得分:2)
访问者在解析<video>
标记时的浏览器将直接向您的数据服务器发出请求。您的Web服务器不参与其中。但是,您想要阻止的是什么,在Web术语中称为热链接,这是可能的。
基本上,每个浏览器请求都附加了一个 referer 字段(只要可用),这样服务器就可以知道用户来自的网站。例如,您打开浏览器并转到google.com
,Google将收到您的请求,而不会使用 referer ,因为这是您在该浏览器标签中打开的第一个网站。
但是,当您搜索并点击链接转到某个网站时,该服务器会收到您点击该链接的Google网页的完整网址,以便将该网站作为HTTP referer传递给该网站请求标题。
因此,在您的数据服务器上,您可以使用.htaccess确保客户端仅通过检查其引用标头来从您的网站发出视频请求。像
这样的东西RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_REFERER} !^http://(www\.)?webserver\.com/.*$ [NC]
RewriteRule \.(swf|flv|mp4)$ - [F,L]
这也可以防止用户只是在浏览器中输入视频URL,希望直接下载。热连接器现在会收到 403 Forbidden 错误。
然而,如果安装了某种隐藏了 referer 字段的浏览器请求的隐私软件,则可能会破坏您的网站供浏览它的人使用。所以,这是你在这里的权衡。