我们为什么要使用URLRewrite重写url技术呢,在网上搜了一下,有篇文章说是有主要三个原因(会用搜索的人一定能在网上搜索到)
1、满足搜索引擎的要求 google可以抓取动态页面,但是google对动态页面的评分一般低于静态页面.
2、隐藏技术实现。
UrlRewrite 是 将静态页面转换为动态页面的一种技术.
例如.您网站页面是 http://www.yourdomain.com/news/docread.aspx?id=123 使用UrlRewrite转换后 可以 以 http://www.yourdomain.com/news/123.html 来访问.
3、满足美感的要求
1、 将urlrewrite-3.2.0.jar引入到自己的工程里
2、 创建一个urlrewrite.xml,里面配置的是 <urlrewrite> <rule> <from>/some/olddir/(.*)</from> <to type="redirect">/very/newdir/$1</to> </rule> </urlrewrite> 说明:此处from配置的是页面的例如btab里配置的链接地址,to配置的是跳转的链接地址,可以配置多个rule,其中from或者是to都是用正则表达式来书写,to的type类型可以是forward也可以是redirect,区别在于前者拦截到指定地址之后页面不予显示,更安全些,后者在地址栏里显示最终跳到的页面地址
<rule>
<from>^/UrlRewriteTest1/(.*)\-(.*).html</from>
<to>/example/Login_execute.do?username=$1&password=$2</to>
</rule>
例如:
<!-- 展会首页 -->
<rule>
<from>/exh.html</from>
<to>/exh/exh_exhList.do</to>
</rule>
<!-- 展会列表 -->
<rule>
<from>/exh/([0-9]+)/exhinfo.html</from>
<to>/exh/exhInfo_list.do?exhDateType=$1</to>
</rule>
3、 在web.xml里增加如下代码:
<filter>
<filter-name>UrlRewriteFilter</filter-name>
<filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>UrlRewriteFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
最后,在需要配置的地址的地方,写出from给出的格式的地址,以下是我配置的仅供参考,web.xml内容一样,urlrewrite.xml如下:
<urlrewrite>
<rule>
<from>^/kpi/kpi(One|Two)Line-(.*)$</from>
<to type="forward">/kpi/kpi$1Line.jsp?reportID=$2</to>
</rule>
</urlrewrite>
常见的错误有:
UrlRewrite 常见错误
1. 404错误(页面无法找到):没有网站根目录建立Httpd.ini 文件 或者 正则表达式 错误,都会导致 页面无法找到错误
2. 500错误(脚本程序错误): 目标动态页面程序错误
3. 404用户自定义错误: 如果网站管理员开启了404 网站自定义错误,urlrewrite将无法正常工作.