我想设置一个正则表达式,禁止对不以以下模式结尾的图像进行热链接:-200.jpg
“200”实际上可以是“150”或“250”或100-999之间的任何数字(即3个字符)。.jpg 可以是.jpeg 或.png,.gif 允许盗链。
我从这样的事情开始:
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(.+\.)?mywebsite\.com/ [NC]
RewriteRule [^0-9]{3}\.(jpe?g|png)$ /img/hotlink.gif [NC,R,L]
例如: 这应该被允许:
h*ttp://mywebsite.tld/dir/dir/hello_sdfk456er_142.jpg-200.jpg
而这应该被拒绝:h*ttp://mywebsite.tld/dir/dir/hello_sdfk456er_142.jpg
但这不起作用。
另外,请考虑以下事项:
我正在使用 url_rewriting 以便显示图像的 html 页面就像h*ttp://mywebsite.tld/username/1337.jpg
1337 代表数据库中图像的 id 一样。我之所以强调这种微妙之处,是因为有这样一条规则:
RewriteRule ![0-9]{3}\.(jpe?g|png)$ /img/hotlink.gif [NC,R,L]
行不通。
编辑:
我刚刚解决了它添加了一些例外:
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(.+\.)?mywebsite\.com/ [NC]
RewriteCond %{REQUEST_URI} !-[0-9]{3}\.(jpe?g|gif|png)$ [NC]
RewriteCond %{REQUEST_URI} !/[0-9]+\.(jpe?g|gif|png)$ [NC]
RewriteRule \.(jpe?g|png)$ /img/hotlink.gif [NC,R,L]
如果您知道“更性感”的方式,请告诉我。无论如何都要感谢那个尝试过的人(删除了他的消息?)