使用.htaccess文件拒绝某些文件类型

时间:2013-10-27 23:39:53

标签: apache .htaccess

我希望以某种方式实施.htaccess,以便无法通过.js之类的直接访问来打开.csswww.example.com/path/to/style.css等特定文件类型。这应该是403错误,但是如果需要,浏览器可以读取此文件。

这里是我实现的代码,这适用于本地服务器,但不是在我将我的页面上传到主服务器

RewriteEngine on 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?127.0.0.1 [NC] 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?127.0.0.1.*$ [NC] 
RewriteRule \.(js|css|jpg|png)$ - [F]

编辑: 我刚试了一下,尝试了这个,它对我有用!

RewriteEngine on 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?127.0.0.1 [NC] 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?127.0.0.1.*$ [NC] 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?mydomain.com [NC] 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?mydomain.com.*$ [NC] 
RewriteRule \.(js|css|jpg|png)$ - [F]

这比我想的要容易得多,而且我的想法也归功于Andy Holmes

4 个答案:

答案 0 :(得分:0)

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?127.0.0.1.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?yourdomain.com.*$ [NC]
RewriteRule \.(png|jpg|jpeg|css|js)$ - [F,NS,L]

给它一个去,是我唯一的其他建议

答案 1 :(得分:0)

RedirectMatch 403 ^.*/images/*\.jpg$
RedirectMatch 403 ^.*/images/*\.jpeg$
RedirectMatch 403 ^.*/images/*\.png$
RedirectMatch 403 ^.*/styles/*\.css$
RedirectMatch 403 ^.*/js/*\.js$

我不知道你是如何构建你的文件夹等但是尝试这个,显然会改变以适应你的文件夹结构。它应该允许图像显示在网站上,但不能直接访问

答案 2 :(得分:0)

这是我的答案,将mydomain.com添加为另一个域,并且您可以根据需要添加任意数量的域,并且可以添加每个apache服务器的相同.htaccess

RewriteEngine on 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?127.0.0.1 [NC] 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?127.0.0.1.*$ [NC] 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?mydomain.com [NC] 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?mydomain.com.*$ [NC] 
RewriteRule \.(js|css|jpg|png)$ - [F]

答案 3 :(得分:-1)

将127.0.0.1更改为您的域名

编辑:

<FilesMatch "\.(?:js|css|jpg|png|jpg|jpeg)$">
Order allow,deny
Deny from all
</FilesMatch>

EDIT2:

我误解了你

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?{HTTP_HOST} [NC]
RewriteRule \.(jpg|jpeg|png|gif|css|js)$ - [NC,F,L]