.htaccess热链接保护 - 添加图像异常

时间:2015-06-11 13:58:39

标签: .htaccess mod-rewrite

所以这是我的代码:

1851-01-01 00:00
1851-01-01 06:00

但我在RewriteEngine on RewriteCond %{HTTP_REFERER} !^http://my-site.com/.*$ [NC] RewriteCond %{HTTP_REFERER} !^http://my-site.com$ [NC] RewriteCond %{HTTP_REFERER} !^http://www.my-site.com/.*$ [NC] RewriteCond %{HTTP_REFERER} !^http://www.my-site.com$ [NC] RewriteRule .*\.(jpg|jpeg|gif|png|)$ http://www.my-site.com/dontsteal.png [R,NC] diretory中有这个.htaccess文件。我不喜欢从images移动dontsteal.png文件,因为文件树变得杂乱无章。如果我将其放入,热链接保护将影响它。如果我将.htaccess文件移动到子级目录中,我将不得不更改我的所有图像images ...因此我需要在文件src中添加一个例外,以便它在dontsteal.png目录并且不受上述代码的影响。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您可以改用以下内容:

RewriteEngine on

# Check that the file exists
RewriteCond %{REQUEST_FILENAME} -f

# Check we're not being referred from our own domain
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?my-site\.com [NC]

# Check that the request is not fot the hotlink image
RewriteCond %{REQUEST_URI} !^/images/dontsteal\.png$ [NC]

# If all the above conditions are met, redirect to the hotlink image
RewriteRule \.(jpg|jpeg|png|gif)$ http://my-site.com/images/dontsteal.png [NC,R,L]

在这里,我已将原始条件压缩为一个,并添加了对HTTPS的支持(如果您决定使用它,则总是很方便)。主要部分是如果图像请求(文件名)以dontsteal.png结尾,则跳过重定向的新条件。这样,您可以将图像放在任何您喜欢的位置。

更新:添加了新条件以确保所请求的文件确实存在 - 我们并非真的需要保护不会出现的图像。