2012-09-03 46 views
0

下面的代码工作正常:如何通用的.htaccess防止盗链

RewriteCond %{HTTP_REFERER} !^http://superwebx.com/.*$ [NC] 
RewriteRule .*\.(jpe?g|gif|bmp|png|swf|css)$ - [F] 

,但我想打一个通用的脚本为我服务的几个网站我管理,但没有试图让

RewriteCond %{HTTP_REFERER} !^http://%{HTTP_HOST}/.*$ [NC] 
RewriteRule .*\.(jpe?g|gif|bmp|png|swf|css)$ - [F] 
+0

这是一个非常有用的问题。我正在构建一个.htaccess,我想在一堆网站上重复使用,所以一个通用的热链接防止RewriteCond会非常棒! – harvest316

回答

0

您不能在正则表达式中使用变量。您可以通过使用正则表达式反向引用像这样解决此问题:(注意#只是用作boundry这可能是因为没有在域的名称中使用任何字符)。

RewriteCond %{HTTP_REFERER} ^https?://([^/]+)/ [NC] 
RewriteCond %1#%{HTTP_HOST} !^(.+)#\1$ 
RewriteRule \.(jpe?g|gif|bmp|png|swf|css)$ - [F] 

0

很老的,但这里是你的答案:

RewriteCond %{HTTP_HOST}@@%{HTTP_REFERER} !^([^@]*)@@https?://\1/.*