Apache服务器中URL Rewrite技术的介绍
 内容

Apache不愧为一款全球著名的web服务器软件。它的功能非常强大,其实我们日常需要用到的功能,apache 都提供了,只不过需要我们熟练掌握它的配置方法。其中非常有用的一项技术叫做“URL Rewrite”,首先提一下,如果想发挥URL rewrite技术的强大功能,你必须精通正则表达式,因为归根结底,URLRewrite引擎就是一个过滤器,你需要使用正则表达式来告诉服务器你的过滤规则了!!前天的时候由于项目中涉及到这方面的内容,所以研究了一下,在这把常用的几种用途示例写出来,希望能够起到抛砖引玉的作用!(呵呵,其实我一直不明白,抛出砖头去,怎么能引回玉来呢?)

1> From Static to Dynamic (网页静态化)
    这项技术其实很常见的。你想,如果各大门户网站为每一条新闻都要创建一个静态网页的话,年长日久,能有多少网页文件啊!!!况且不说存储限制,管理起来也很难。其实他们都采用了网页静态化的技术。比如你查看新华网上的
http://www.xinhuanet.com/2006/1234.html 页面,看起来你访问的是一个静态网页,其实apache可以自动把它转化成一个动态页面,比如http://www.xinhuanet.com/2006/news.php?id=1234 ,呵呵,知道了吧,这样多简单,网站管理人员根本不需要为每条新闻写一张网页,只要把它录入数据库即可。当用户访问时,服务器会自动动态生成相应的页面。 下面说一下具体的代码:

RewriteEngine on
RewriteBase    /2006/
RewriteRule    ^([0-9]+)\.html$     news.php?id=$1 [T=application/x-httpd-php]

至于RewriteBase 和RewriteRule指令的用法请参考apache文档。

2>借助于referer来实现防盗链功能
    前面已经说过,基于referer的检测是不可靠的,但也是行之有效的。这里把代码给大家解释一下:

RewriteCond   %{HTTP_REFERER}     !^$
RewriteCond   %{HTTP_REFERER}    !^http://www.yoursitename.com/ [NC]
RewriteRule    .*\.gif$        -                                    [F]

上面的代码将会阻止你网站上的所有的图片被盗链。RewriteCond表示在什么条件下应用 RewriteRule指定的重写规则。在这里,两条RewriteCond指令实际上指定如果referer的值不以"http://www.yoursitename.com/ 开头,则应用下面RewriteRule指定的规则,而这里RewriteRule指令的含义就是返回无效地址,拒绝用户的请求。如果你想要警告一下盗链的人,你可以在这里返回一个小图片,提示它们“严禁盗链”!! 呵呵,读到这里,相信你对平时在论坛看到的“防盗链”图片幕后的机制已经很清楚了吧!!这些都得归功于apache!!

3> 过滤访问者IP地址
    我曾经以为过滤访问IP地址是防火墙或网关做的,比如南开影视,在校外就访问不了!到底怎么实现的呢??其实大多数是apache服务器对访问者IP进行了过滤,而不是网关。因为你服务器的管理员不一定就能控制了网关啊!再说在服务器上设置过滤规则要灵活方便的多。具体怎么设置,使用URL Rewrite技术就可以,但经过对比,我推荐大家另外一种好办法:那就是通过设置.htaccess文件!使用.htaccess文件可以灵活地对每一个文件夹进行控制!!
    比如我不想某个政府部门访问到我的站点的内容,那可以通过在.htaccess中加入该部门的IP而将它们拒绝在外。例如:

order allow,deny
deny from 210.10.56.32
deny from 219.5.45.
allow from all

第二行拒绝某个IP,第三行拒绝某个IP段,也就是219.5.45.0~219.2.45.255 ,呵呵,想要拒绝所有人?用deny from all好了。你不止可以用IP地址,也可以用相应网站的域名来设定。

4> 多台服务器负载平衡
    你想,163的web服务器肯定不止一台(其实100台也不止),但我们输入的地址永远都是
www.163.com ,具体如何在多台服务器之间平衡负载?? 有很多种办法,一般都是在DNS服务器上做手脚,其实借助URL Rewrite技术也可以实现同样的功能! 但由于性能方面可能会受影响,这种方法并不是很常用,在这里也不再赘述,请大家直接参考apache的文档!

最后,说一下别的两件事:第一,今天弄清楚了lqqm上把鼠标移到图片上就出现“发送图片到手机”标签的实现原理。它实际上完全是借助于 javascript,我再次感觉到javascript的功能并不能小瞧。请不要拿它去跟C++/Java/C#作比较,大家还记得“长颈鹿和羊”的故事吧,它们各有所长,谁都取代不了谁!在代码中,它首先通过document.images数组来获得当前页面中的所有图片对象,然后再为这些对象的 onmouseover事件加上响应函数。在响应函数中使用createElement来创建“发送图片到手机”标签,然后使用 insertAdjacentElement函数把新创建的对象插入到document中,难点之一就是你需要熟练地掌握javascript中DOM的知识和函数。第二,今天明白了如何提供在线html编辑功能,其实有免费的HTML editor 插件,我们只需要学会如何使用即可,并不用自己去实现编辑功能。我找了一下,感觉http://www.kevinroth.com/rte/ 提供的一款插件比较简洁好用,但它不属于重量级的插件,有些功能上明显做得还不够,呵呵,既然是免费的我们也不能责备求全嘛!! 大家以后遇到比这更好的插件时请告诉我一声,先谢过了!!!

::+::文摘来源于互联网,其观点仅代表作者本人观点,与本站立场无关,如果侵害到你的权益,请联系本站删除::+::知识产权保护::+::要捐助本站么::+::
::+::推广服务说明:如果你的网站是正规的站点,或你的商品是合格的产品,随时欢迎与我们联络,本站联系电话:13695067571::+::要推广服务么::+::