В моей конфигурации Apache есть виртуальный хост для работы с рекламой, спамом и вредоносными сайтами. Он работает за счет перенаправления плохих серверов на определенный адрес обратной связи, который отображается на виртуальный хост через файл HOSTS.
Используя следующие директивы, я смог заменить любые страницы с плохих серверов чем-то вроде [объявление] и любую графику с плохих серверов с помощью локального прозрачного файла PNG размером 1x1.
RewriteRule \.(gif|jpg|png|jpeg)$ /1x1-trans.png
ErrorDocument 404 "<p>[ad]</p>"
Однако недавно я видел страницы со сломанными тегами IMG, потому что они используют SRC без расширения файла.
<img src="http://badserver.com/adsandjunk/foobar;tile=4;sz=575x90;othervariables=stuff?">
Я пробовал использовать
RewriteRule ^.*$ "<p>ad</p>" [L]
Но это снова дает заполнители сломанного изображения. Используя это
RewriteRule ^.*$ /1x1-trans.png [L]
Исправляет изображения, но затем для любых других изображений (например, страниц, фреймов и т. Д.) Появляется диалоговое окно «Сохранить как» для PNG.
Как я могу заставить Apache заменить графику (например, любой тег IMG) графикой, а все остальное - небольшим количеством HTML?
Большое спасибо.
Просто из любопытства, вы используете здесь Apache в качестве обратного прокси? Это единственный контекст, в котором я могу понять, что у вас есть виртуальный хост для «работы с рекламой, спамом и вредоносными сайтами».
Я не уверен, что это проблема с mod_rewrite. Возможно, вам лучше использовать фильтрацию:
http://httpd.apache.org/docs/2.0/mod/mod_ext_filter.html
В частности, раздел, в котором используется sed для замены текста. На самом деле вы можете использовать что угодно, Perl и т. Д.
Я сам этого не делал, но маршрут sed выглядит многообещающим, если вы сможете собрать воедино конкретные критерии поиска и замены.
Вы делаете это нелегко. Просто используйте Privoxy.