Linux 如何使用generic.htaccess防止热链接

Linux 如何使用generic.htaccess防止热链接,linux,apache,.htaccess,mod-rewrite,hotlinking,Linux,Apache,.htaccess,Mod Rewrite,Hotlinking,以下代码可以正常工作: 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

以下代码可以正常工作:

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]

不能在正则表达式中使用变量。您可以通过使用RegEx backreference解决此问题,如下所示:

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

(请注意,
#
仅用作边界。它可以是域名中未使用的任何字符。)

非常旧的一个,但下面是您的答案:

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

这是一个非常有用的问题。我正在构建一个.htaccess,我想在很多站点上重用它,所以一个通用的热链接预防重写器将是极好的!