php - (htaccess) 如何使文件只能由主机服务器访问并防止直接访问?

标签 php apache .htaccess mod-rewrite hotlinking

我正在使用 Apache,假设在“images/sample.jpg”中有一个文件。

  • 使用 .htaccess,我怎样才能让它出现在网站上,然后阻止通过 url 直接访问 (< em>例如,像“http://www.abc.com/images/sample.jpg”这样的直接 url) ?

  • 如果可能,我还希望解决方案影响“.htaccess”文件下的所有子文件夹。


补充说明:
在获得以下答案一天后,我发现所有解决方案在逻辑上都有效,但 Firefox 存在问题。我的意思是,下面的答案是在每个浏览器上测试时给出的解决方案,但不是在 Firefox 上。

最佳答案

这称为“热链接”——我建议您先阅读它,因为它不仅仅是您的 .htaccess 中的一行或一段代码。此页面不错:http://altlab.com/htaccess_tutorial.html

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?mysite\.com/ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteRule .*\.(jpe?g|gif|bmp|png)$ http://i.imgur.com/qX4w7.gif [L]

这将显示来自 imgur 的图像,但有时我喜欢更进一步并托管来 self 自己的主机的替代图像 - 例如,如果它是竞争对手,你可以玩得很开心;)

关于php - (htaccess) 如何使文件只能由主机服务器访问并防止直接访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10235563/

相关文章:

apache - 从子文件夹托管主域

php - sql语法错误检查手册

php - 关系表中的 SQL 搜索查询

html - CSS 在 apache2 服务器上的 Flask 应用程序中不起作用

Apache重启历史记录

php - 拒绝访问 .htaccess 中的 .ini 文件是否安全?

php - mysql_query() 返回返回 true,但 mysql_num_rows() 和 mysql_fetch_array() 给出“不是有效资源错误

php - MySQL 查询在本地服务器上运行良好,但在实时运行时出错

c++ - 如何在不使用 make 文件的情况下运行 C 代理示例程序?

.htaccess - 2 域名 (EN/FR) 1 FTP 重定向