1

我的域中有很多文件夹和子文件夹。我想避免直接访问特定子文件夹中的文件类型 html/ jpg/ gif/ 等,但我希望它可以通过 index.php 页面访问。

结构类似于:

  • www.domain.com/folder1
  • www.domain.com/folder2
  • www.domain.com/folder2/subfolder1
  • www.domain.com/folder2/subfolder2
  • www.domain.com/folder2/subfolder2/index.php
  • www.domain.com/folder2/subfolder2/page1.html
  • www.domain.com/folder2/subfolder2/page2.html
  • www.domain.com/folder2/subfolder2/images/1.jpg
  • www.domain.com/folder2/subfolder2/images/2.jpg

我尝试将 page1.html、page2.html 和 images 文件夹放入名为 blocks_content 的新文件夹

  • www.domain.com/folder2/subfolder2/index.php
  • www.domain.com/folder2/subfolder2/blocked_content /page1.html _

deny from allOrder Deny,Allow Deny from allblocked_content文件夹中添加了一个.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]

并将其放在 subfolder2 中并没有效果。

在 .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]

我把它放在 subfolder2 里面:没有效果。我把它放在根目录它会阻止所有其他文件夹。

我搜索了很多。我被困住了。我究竟做错了什么?把 htacess 放在错误的地方或忘记添加一些东西?如果可能的话,我想通过 .htacess 来做到这一点。将 php 会话包含到所有 html 文件将不起作用,因为我无法更改文件名。

4

1 回答 1

1

找到了按照我尝试的方式执行此操作的方法。

使用 Web 工具在此网站中生成此 .htaccess防止图像热链接 – 如何保护热链接

将 .htaccess 放入我的blocked_content/文件夹。

我域中的 index.php 可以访问此文件夹中的所有内容,但用户无法在浏览器上键入 url 作为热链接。例如: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 告诉我它可能没有我希望的那么安全。

于 2012-09-24T21:57:26.520 回答