apache 的 rewrite模块 用了也有段时间了。每次都是先从历史中找资料修改。今天腾出点时间整理下和大家分享一下,其实rewrite规则超多,我也没有全部理解,实践中我用的一些列出来,相信一般应用的朋友足够了
为什么需要用重写规则?
他人总结:
一个网站,如果是长期需要放在internet上提供服务,必定会有不断地更新和维护,如临 时转移到其它服务器进行维护,重新组织目录结构,变换URL甚至改变到新的域名等等, 而为了让客户不会因此受到任何影响,最好的方法就是使用Apache Rewrite Rule(重写
规则)。
-
当在浏览器的地址栏输入一个无效的参数时,会出现数据库的错误提示,这是一个安全的隐患
-
搜索引擎无法收录你的所有网页
-
网页的链接地址是一系列的参数,对浏览用户和搜索引擎都不易理解
我的总结:
rewrite可以保持接口的固定稳定性,防止图片盗链,增加搜索引擎的爬去机会,同事还能给人深不可测的感觉(猜不透你用的后端是什么技术和语言写的)
常见的Dz论坛就喜欢这样干,优化了搜索引擎,有看上去静态话给人一种高深的感觉:
RewriteRule ^(.*)/archiver/((fid|tid)-[/w/-]+/.html)$ $1/archiver/index.php?$2
RewriteRule ^(.*)/forum-([0-9]+)-([0-9]+)/.html$ $1/forumdisplay.php?fid=$2&page=$3配置
我这里用的是apache2的模块,IIS中也可以配置,相信原理基本类似。
在httpd.conf里定义LoadModule rewrite_module modules/mod_rewrite.so
虚拟主机配置中定义 具体的rewrite规则。
这里相信大家都熟悉,我就不说了
Apache的RewriteRule规则详细介绍: