我试图禁止其他用户通过谷歌图片访问我的图片或直接访问他们(例如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的了解非常有限,而且我无法追踪造成错误的原因。
答案 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>