


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上把鼠标移到图片上就出现“发送图片到手机”标签的实现原理。它实际上完全是借助于 java,我再次感觉到java的功能并不能小瞧。请不要拿它去跟C++/Java/C#作比较,大家还记得“长颈鹿和羊”的故事吧,它们各有所长,谁都取代不了谁!在代码中,它首先通过document.images数组来获得当前页面中的所有图片对象,然后再为这些对象的 onmouseover事件加上响应函数。在响应函数中使用createElement来创建“发送图片到手机”标签,然后使用 insertAdjacentElement函数把新创建的对象插入到document中,难点之一就是你需要熟练地掌握java中DOM的知识和函数。第二,今天明白了如何提供在线html编辑功能,其实有免费的HTML editor 插件,我们只需要学会如何使用即可,并不用自己去实现编辑功能。
关键字:Apache典服务器 URL Rewrite 技术
新文章:
- CentOS7下图形配置网络的方法
- CentOS 7如何添加删除用户
- 如何解决centos7双系统后丢失windows启动项
- CentOS单网卡如何批量添加不同IP段
- CentOS下iconv命令的介绍
- Centos7 SSH密钥登陆及密码密钥双重验证详解
- CentOS 7.1添加删除用户的方法
- CentOS查找/扫描局域网打印机IP讲解
- CentOS7使用hostapd实现无AP模式的详解
- su命令不能切换root的解决方法
- 解决VMware下CentOS7网络重启出错
- 解决Centos7双系统后丢失windows启动项
- CentOS下如何避免文件覆盖
- CentOS7和CentOS6系统有什么不同呢
- Centos 6.6默认iptable规则详解