基于MIMEtypes的Apache重写

我的Apacheconfiguration中有一个虚拟主机来处理广告,垃圾邮件和恶意软件网站。 它通过将不良服务器redirect到通过HOSTS文件映射到虚拟主机的特定环回地址来工作。

使用下面的指令,我已经能够使用类似[ad]的东西来replace坏服务器中的任何页面,并且使用本地1×1透明的PNG文件replace坏服务器中的任何图片。

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] 

修复图像,但是然后任何非图像(如页面,框架等)popup“另存为”对话框的PNG。

我怎样才能让Apache用graphics和其他所有的HTML代替graphics(即任何IMG标签)?

非常感谢。

出于好奇,你在这里使用Apache作为反向代理吗? 这是我能理解你拥有虚拟主机“处理广告,垃圾邮件和恶意软件网站”的唯一环境。

我不确定这是一个mod_rewrite问题。 使用filter可能会更好:

http://httpd.apache.org/docs/2.0/mod/mod_ext_filter.html

特别是他们使用sed来代替文本的部分。 你真的可以使用任何东西,perl等

我自己并没有这样做,但是如果你可以拼凑特定的search和replace标准的话,sed的路线看起来很有希望。

你这样做是困难的。 只要使用Privoxy 。