基于 Mime 类型的 Apache 重写

基于 Mime 类型的 Apache 重写

我的 Apache 配置中有一个虚拟主机,用于处理广告、垃圾邮件和恶意软件网站。它的工作原理是让坏服务器重定向到通过 HOSTS 文件映射到虚拟主机的特定环回地址。

使用下面的指令,我能够用类似以下内容替换来自坏服务器的任何页面[广告]以及任何来自不良服务器的带有本地 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 替换其他所有内容?

多谢。

答案1

只是出于好奇,您在这里使用 Apache 作为反向代理吗?这是我唯一能理解的上下文,您有一个虚拟主机来“处理广告、垃圾邮件和恶意软件网站”。

我不确定这是否是 mod_rewrite 的问题。你最好使用过滤:

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

特别是他们使用 sed 替换文本的部分。实际上,您可以使用几乎任何东西,perl 等等。

我自己没有这样做过,但如果您可以将特定的搜索和替换条件拼凑在一起,那么 sed 路线看起来很有希望。

答案2

你这样做很难。只需使用私有网络

相关内容