Я хотел бы настроить регулярное выражение, которое запрещало бы горячее связывание изображений, которые НЕ заканчиваются следующим шаблоном: -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 означает идентификатор изображения в базе данных. Причина, по которой я подчеркиваю эту тонкость, заключается в том, что такое правило, как:
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]
Если вы знаете "более сексуальный" способ, пожалуйста, дайте мне знать. В любом случае, спасибо парню, который попробовал (удалил свои сообщения?)