Назад | Перейти на главную страницу

Перезапись Apache на основе Mime-типа

В моей конфигурации 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.