我的 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
你这样做很难。只需使用私有网络。