禁止访问特定文件夹中的文件

时间:2013-08-10 19:21:05

标签: apache .htaccess

我有一个目录files,其中包含我不希望直接访问的文件 如果您访问www.mywebiste.com/files/myfile.pdf,那么您将被重定向。

但我希望可以从网站的其他部分访问这些文件。 即。我可能有一个页面www.mywebiste.com/dave/page/,它需要能够在文件目录中显示文件。

我在文件目录中尝试了以下htacccess,但它无效:

RewriteEngine ON
RewriteCond %{HTTP_REFERER} ^http://www.mywebiste.com/files/ [NC]
RewriteRule ^.*$ - [R=404,L]
  • 如果我能让这个工作,我认为这也会阻止文件被机器人编入索引,因为它们也会被重定向?

1 个答案:

答案 0 :(得分:4)

Options +FollowSymLinks -MultiViews

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_REFERER} ^$
RewriteRule ^files/.*$ - [F]

您也可以使用:

RewriteCond %{HTTP_REFERER} !^http://(www.)?mywebiste.com/.*$ [NC]
RewriteRule ^files/.*$ - [F]

由于引用来自于被称为页面的页面,因此页面可以是您域中的任何内容,因此我可以使用^http://(www.)?mywebiste.com/.*$,如果您感觉更舒服,也可以使用^http://(www.)?mywebiste.com。 如果refer为空且文件夹是文件拒绝访问它。

PS:http://(www.)?mywebiste.com表示网站地址有www.或不是。


对于机器人,即使引用为空,也可以使用用户代理来访问。

robots.txt示例:

User-agent: *
Disallow: /files/

More information about robots.txt see here.