how to generic .htaccess to prevent hotlink

蹲街弑〆低调 提交于 2019-12-10 12:20:05

问题


The following code works fine:

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

but I want to make a generic script serve me for several sites I manage, but fails try to get

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

回答1:


You can't use variables inside the regex. You can work around this by using a RegEx backreference like so:

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

(note the # is just used as a boundry. It could be any character that isn't used in domain-names.)




回答2:


Very old one, but here's your answer:

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


来源:https://stackoverflow.com/questions/12242438/how-to-generic-htaccess-to-prevent-hotlink

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!