Apache переписать на основе типа MIME
У меня есть виртуальный хост в моей конфигурации Apache для работы с рекламой, спамом и вредоносными сайтами. Это работает, когда плохие серверы перенаправляют на определенный адрес обратной связи, который отображается на виртуальный хост через файл HOSTS.
Используя следующие директивы, я смог заменить любые страницы с плохих серверов чем-то вроде [ad] и любую графику с плохих серверов локальным прозрачным 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?
Большое спасибо.
2 ответа
Просто из любопытства, вы используете Apache в качестве обратного прокси-сервера? Я понимаю, что это единственный контекст, в котором у вас есть виртуальный хост, который "справляется с рекламой, спамом и вредоносными сайтами".
Я не уверен, что это проблема mod_rewrite. Вам может быть лучше использовать фильтрацию:
http://httpd.apache.org/docs/2.0/mod/mod_ext_filter.html
Особенно раздел, где они используют sed для замены текста. Вы можете использовать практически все, что угодно, Perl и т. Д.
Я сам этого не делал, но маршрут sed выглядит многообещающе, если вы сможете объединить конкретные критерии поиска и замены.