用apache 2的mod_ext_filter给html文件加广告。
想在静态页面上自动加个广告条,而不必手动修改每个静态页面。
按照这个需求在google上找了一段时候,不得要领。
后来想起来tomcat里有filter的概念的。
就到apache的文档里找。
瞎猫碰到了这个死耗子。
http://httpd.apache.org/docs/2.0/mod/mod_ext_filter.html
由于自己学习不认真,并且编程能力不强,笨拙的按照文档解决了这个问题。
个人感觉就是unix管道的理念。
服务器环境是centos 4.2 /apache 2.0.52
首先加载mod_ext_filter
在/etc/httpd/conf/httpd.conf
的Dynamic Shared Object (DSO) Support节
加入
Code: |
LoadModule ext_filter_module modules/mod_ext_filter.so |
然后定义filter的名字(advtext)和配置filter要调用程序的名字(gingeradv)。
Code: |
ExtFilterDefine advtext mode=output intype=text/html cmd="/usr/bin/gingeradv" |
在Directory标签里加入如下行。
Code: |
SetOutputFilter advtext |
加入后看起来如下
Code: |
<Directory /> Options FollowSymLinks AllowOverride None SetOutputFilter fixtext </Directory> |
用于加入广告的程序gingeradv是用perl写的,自己笨写的很垃圾。
Code: |
#!/usr/bin/perl my @lines = <STDIN>; open ADVLINE, "/var/www/html/abc.txt" or die "cant't find the adv files"; my @advlines = <ADVLINE>; print @lines,@advlines; |
记得要给这个文件执行的权限。
Code: |
chmod a+x gingeradv |
要显示的广告保存在/var/www/html/abc.txt里。
我用于测试的这个是一个google的Google AdSense
abc.txt如下
Code: |
<script type="text/j avascript"><!-- google_ad_client = "pub-5617089787488679"; google_ad_width = 728; google_ad_height = 90; google_ad_format = "728x90_as"; google_ad_type = "text_image"; google_ad_channel =""; google_color_border = "FFFFFF"; google_color_bg = "FFFFFF"; google_color_link = "0000FF"; google_color_url = "008000"; google_color_text = "000000"; //--></script> <script type="text/j avascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> |
然后重新启动apache服务器
Code: |
apachectl graceful |
在浏览器里访问效果如下。
但是这样虽然解决了问题,但perl程序好像写的很笨拙,估计没有效率。
还有这种工作方式每个请求都会调用这个perl脚本,估计访问量大的时候会不怎么好。
自己猜想写个动态加载的so才是正路,可惜不会,慢慢学习中,但愿我能学习。
评论:
IIs FrameWork...
都有自己的ad 轮显的东西
找找就行乐
Posted by: massCN.com | 2005年10月17日 晚上09时19分
呵呵,那也要你在html里嵌入代码啊!
这个东西是只要你往web目录下放个普通的html,它的后面就会被自动加上你想加上的东西,比如你使用免费空间的时候会有广告,那广告也不是你自己加上去的啊。
Posted by: sleetdrop | 2005年10月18日 上午09时31分