当我是我自己的推荐人时,允许热链接但重定向!

时间:2010-02-28 20:09:51

标签: php image .htaccess hotlinking

我想,使用htaccess,允许热链接,但如果有人在我的网站上查看图像,我想将它们重定向到我显示导航等图像的“托管”版本。

所以基本上任何来自外部网站的热链接都不会受到影响,但是如果有人直接在我的服务器上查看图像,即www.domain.com/image.jpg,则会重定向。我还想确保我也可以在我的网站中正确显示图像。

有人可以帮忙吗?

编辑:这是我目前的代码

RewriteCond %{REQUEST_FILENAME} \.jpg$
RewriteCond %{HTTP_REFERER} =""
RewriteRule ^userpics/covers/(.*).jpg$ /view/$1.html [R=301]

RewriteRule ^view/(.*).html$ /view.html?img=$1 [L]

由于

3 个答案:

答案 0 :(得分:2)

使用.htaccess

RewriteEngine on
RewriteCond %{REQUEST_URI} \.(jpg|png|gif)$
RewriteCond %{HTTP_REFERER} ^https?://yoursite\.com/.*$ [NC]
RewriteRule ([^/]+)$ url_to_script?img=$1

你可以简化

RewriteCond %{HTTP_REFERER} ^https?://yoursite\.com/.*$ [NC]

RewriteCond %{HTTP_REFERER} yoursite\.com [NC]

规则可以写成

 RewriteRule (.*) url_to_script?img=$1

如果您需要在参数中包含图像的路径。

答案 1 :(得分:0)

如果HTTP_REFERRER为空,则应使用mod_rewrite,然后重定向到/image-with-nav.php?image=$1
试试这样的事情 RewriteEngine on

RewriteCond %{HTTP_REFERER} ^$

.* image-with-nav.php?image=$1 [L]

答案 2 :(得分:0)

现在,您需要检查的是引荐来源,因为URL始终是图像的URL,因为它是一个http请求。你可以选择这样的东西:

RewriteCond %{REQUEST_FILENAME} \.(jpg|png|gif)$
RewriteCond %{HTTP_REFERER} =""
RewriteRule (.*) http://someurl.com [R=301]