我的 Apache 配置中有一个虚拟主机来处理广告、垃圾邮件和恶意软件站点。它的工作原理是让坏服务器重定向到通过 HOSTS 文件映射到虚拟主机的特定环回地址。
使用以下指令,我已经能够将来自不良服务器的任何页面替换为[ad]之类的内容,并使用本地 1x1 透明 PNG 文件替换来自不良服务器的任何图形。
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。