规则引擎介绍
MRCMS系统中内置的规则引擎并不是有决策功能的规则引擎,本规则引擎主要应用于URL地址重写,达到页面静态地址的目的。页面静态化对于搜索引擎更友好能让页面收录更快。
规则引擎应用
实际应用在MRCMS的URL优化功能上。
规则引擎原理
原理很简单,URL规则 重写URL地址是采用正则表达式的方式来做的,只要通过设置规则参数和url规则,下面这段地址是原生的访问路径,不可否认参数化的地址很丑陋。
/cms?p=index&type=template&date=20130405&id=1
URL规则引擎配置如下后
/{channel}/{type}/{date}/{id}.html
通过编码
可以得到:
/index/template/20130405/1.html
当然 也可以通过 解码
得到原始的URL地址,通过编码与解码过程可以达到动态配置URL地址的目的,做页面静态化也不用担心参数问题。
规则代码例子
URLRewrite re = new URLRewrite();
// 设置规则参数
re.ruleParameter.put("{channel}", new Parameter("p","{channel}","([a-zA-Z_0-9]+)"));
re.ruleParameter.put("{type}", new Parameter("type","{type}","([a-zA-Z_0-9]+)"));
re.ruleParameter.put("{id}", new Parameter("id","{id}","([0-9]+)"));
// 初始化两个规则
re.putRule("列表","{channel}.html");
re.putRule("内容","{channel}/{type}/cms-thread-{id}.html");
// 文章类型的地址
String url ="p=index&type=article&id=1";
System.out.println("访问的地址:"+url);
System.out.println("-----------------------");
String gourl = re.encoder(url);
System.out.println("URL编码:"+gourl);
gourl = re.decoder(gourl);
System.out.println("URL解码:"+gourl);
System.out.println("==========================");
// 栏目类型的地址
url ="p=about";
System.out.println("访问的地址:"+url);
System.out.println("-----------------------");
gourl = re.encoder(url);
System.out.println("URL编码:"+gourl);
gourl = re.decoder(gourl);
System.out.println("URL解码:"+gourl);