尝试禁止用户使用.htaccess访问我的图像文件夹

时间:2013-11-30 13:40:54

标签: regex apache .htaccess security mod-rewrite

我试图禁止其他用户通过谷歌图片访问我的图片或直接访问他们(例如mysite.com/img/protected_image.jpg),所以,我看了在一些htaccess脚本我可以使用。

这是我发现的片段:

RewriteCond %{HTTP_REFERER}!^$
RewriteCond %{HTTP_REFERER}!^http://(www\.)?mysite.com(/)?.*$ [NC]
RewriteRule .*\.(gif¦jpg¦png)$ - [F]

以及我如何将其附加到我现有的 .htaccess

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RewriteCond %{HTTP_REFERER}!^$
RewriteCond %{HTTP_REFERER}!^http://(www\.)?mysite.com(/)?.*$ [NC]
RewriteRule .*\.(gif¦jpg¦png)$ - [F]
</IfModule>

我在Wordpress上运行它带有它自己的htaccess配置,只是因为你知道我为什么要追加它。我改变了&#34; mysite&#34;到我的实际域名。

当我将htaccess文件部署到我的服务器时,出现了内部服务器错误。显然,我已经用错误的方式实现了它,我对.htaccess的了解非常有限,而且我无法追踪造成错误的原因。

1 个答案:

答案 0 :(得分:1)

更改规则的顺序。否则index.php是您的catch all前端控制器,它会更改请求URI,然后最后一个图像阻止规则不会启动。

试试这个.htaccess:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?mysite\.com [NC]
RewriteRule \.(gif|jpg|png)$ - [F,NC]

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>