我的域名中有很多文件夹和子文件夹。我想避免直接访问特定子文件夹中的文件类型html / jpg / gif / etc,但我希望它可以通过index.php页面访问。
结构类似于:
我尝试将page1.html,page2.html和images文件夹放在名为 blocked_content 的新文件夹中:
并在 blocked_content 文件夹中添加了deny from all
和Order Deny,Allow
Deny from all
的.htaccess。它阻止了所有,甚至index.php无法访问其中的文件。 Index.php只有<a href="blocked_content/page1.html">
在.htaccess上尝试此配置:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?domain\.com [NC]
RewriteRule \.(swf|pdf|css|gif|png|jpg|html|htm)$ - [F]
并将其放在子文件夹2中并且没有效果。
在.htaccess上尝试此配置:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?domain\.com/folder2/subfolder2 [NC]
RewriteRule \.(swf|pdf|css|gif|png|jpg|html|htm)$ - [F]
我把它放在子文件夹2中:没有效果。我把它放在根目录下它会阻止所有其他文件夹。
我搜索了很多。我被困了。我究竟做错了什么?把htacess放在错误的地方或伪造添加东西?如果有可能,我想通过.htacess这样做。包含所有html文件的php会话将无法正常工作,因为我无法更改文件名。
答案 0 :(得分:1)
找到按照我的方式做到这一点的方法。
使用网络工具在此网站PREVENT HOTLINKING OF IMAGES – HOW TO HOTLINK PROTECT
中生成此.htaccess将.htaccess放入 blocked_content / 文件夹。
我的域中的index.php可以访问此文件夹中的所有内容,但用户无法在浏览器上键入该链接作为热链接。例如: www.domain.com/folder2/subfolder2/blocked_content/images/1.jpg
新的.htaccess
之间的区别RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?domain.com [NC]
RewriteRule \.(swf|pdf|css|gif|png|jpg|html|htm)$ - [NC,F,L]
对旧的:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?domain\.com [NC]
RewriteRule \.(swf|pdf|css|gif|png|jpg|html|htm)$ - [F]
PS:@Mikulas Dite告诉我,它可能不如我希望的那么安全。