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,我想在很多站点上重用它,所以一个通用的热链接预防重写器将是极好的!