最近公司要开发新的项目要用到URL重写,本人技术水平有限,就了解了两个工具,ApaChe's的mod_rewrite和Urlrewrite。公司的大虾让选择用后者Urlrewrite,虾米跟之 — — 。
老规矩,学新技术先去官网http://tuckey.org/urlrewrite/ ,咬文档(本人比较笨,见笑 — — ),目前最新版本是 4.0.3,下载jar包 urlrewritefilter-4.0.3.jar 或者在Maven POM里配置下面代码
<dependency> <groupId>org.tuckey</groupId> <artifactId>urlrewritefilter</artifactId> <version>4.0.3</version> </dependency>
本人使用的是后者。重新构建下项目,然后在项目的/web-inf/web.xml中添加上下面代码
<filter> <filter-name>UrlRewriteFilter</filter-name> <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class> <!-- urlrewrite.xml 文件存放路径 default /WEB-INF/urlrewrite.xml --> <init-param> <param-name>confPath</param-name> <param-value>/WEB-INF/urlrewrite.xml</param-value> </init-param> </filter> <filter-mapping> <filter-name>UrlRewriteFilter</filter-name> <url-pattern>/*</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> </filter-mapping>
urlrewrite.xml 只能放到WEB-INF下面。
继续 urlrewrite.xml 配置文档代码
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 3.2//EN" "http://tuckey.org/res/dtds/urlrewrite3.2.dtd"> <urlrewrite> <rule> <note>大小写字母数字都可 </note> <from >/uee/([_a-zA-Z]+[_0-9a-zA-Z-/]*[_0-9a-zA-Z]+).html$</from> <to type="forward">/uee/$1.do</to> </rule> <outbound-rule> <note> </note> <from>^/page/second.do\?me=([a-z]+)$</from> <to >/page/me_$1</to> </outbound-rule> </urlrewrite>
rule是url规则,from是显示出来的地址,to是映射的实际地址,$1是重写参数,可以为多个,()里是匹配的正则表达式.
<outbound-rule> 是隐藏 a 链接的,就如官网上说的 Note, If you are using JSTL (ie, <c:url) this will work also. 意思就是说需要转化的链接不能直接写在a标签中需要写在c:url或其他服务器需要解析的变量中这样才能对其重新显示。 在页面上插入下面代码
<a href="<%=response.encodeURL("/page/second.do?me=aa") %>">/page/second.jsp?me=aa</a>
然后鼠标放到该a链接上 你会发现访问路径已经变成了 http://localhost:8080/page/me_aa 真实的路径已经被隐藏。
常用正则表达式:
^[A-Za-z]+$ //匹配由26个英文字母组成的字符串 大小写都可
^[A-Z]+$ //匹配由26个英文字母的大写组成的字符串
^[a-z]+$ //匹配由26个英文字母的小写组成的字符串
^[A-Za-z0-9]+$ //匹配由数字和26个英文字母组成的字符串
^/w+$ //匹配由数字、26个英文字母或者下划线组成的字符串
正则表达式这块要细心点,本人对这块没多少研究的,仅限与会用,知道大概意思。
好了,其余的东东,都不细说了,配置完毕后理想状态是可以运行了,是的,可以运行了,但是目前只是简单的一些页面的URL地址实现了重写,如果是Action的话就不行了,这时在/WEB-INF/web.xml中Struts2的filter-mapping 加入下面代码中<dispatcher>即可。
<filter-mapping> <filter-name>struts2</filter-name> <url-pattern>*.do</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> <dispatcher>INCLUDE</dispatcher> </filter-mapping>
相关推荐
ssh2中的urlrewrite和Struts2的生成静态页面
本框架为struts2+spring3+hibernate4+urlrewrite(伪静态地址) Struts采用通配,web-inf下的urlrewrite.xml为伪静态配置文件,跳转到struts.xml进行对应
NULL 博文链接:https://namas.iteye.com/blog/1130854
3 最重要的 在象Google Yahoo 和 Live 这样的搜索引擎中提高你网站上网页的搜索相关性 具体来说 URL重写经常能使你在你网站上">什么是UrlRewrite UrlRewrite 是 将动态页面转换为静态页面的一种技术 例如 您网站...
NULL 博文链接:https://stride.iteye.com/blog/723324
UrlRewrite一般都是在web.config里配置访问规则在路由到实际页面,所以先实现自定义节点信息读取,这里我定义了俩个类 webconfig定义了组,不需要的话可以把UrlRewriteConfigGroup类去掉并修改配置节点,在...
IIS Urlrewrite2,IIS服务器URl重写工具,,IIS服务器URl重写工具,,IIS服务器URl重写工具,
在网上找了很多都不合心意,就知道改了下源码,只改了org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.class 文件,如果担心安全的朋友,可以下载 4.0.3的jar 替换UrlRewriteFilter.class即可。 confPath 默认 ...
URL Rewrite是微软针对IIS推出的一种对URL进行重写的扩展模块,目前支持用于IIS7及以上版本。该模块使IIS管理员能够创建强大的自定义规则,语法支持正则规则以及通配符规则过滤。它能够根据HTTP头和IIS服务器变量...
urlrewrite重写地址,Urlrewrite 2.5.2 现在有2.6版本的,自己去网上找吧
UrlRewrite.rarUrlRewrite.rar
UrlReWrite(Url重写或伪静态)UrlReWrite(Url重写或伪静态)
urlrewrite 只支持单个配置文件,默认的配置文件为:/WEB-INF/urlrewrite.xml 现在对urlrewrite-3.2的源码进行了修改,使它能够支持多文件和通配符的形式加载自定义配置文件,即可以进行如下的配置: <param-name>...
urlrewrite Jar包 urlrewrite-3.1.0.jar
URLRewrite URL重写组件 里边有相关配置说明 包括了web.Config 外附一个Css
java urlrewrite demo
UrlRewrite.dll 在使用开发的时候,win7或者win8的系统,可能会需要
url rewrite 时,中文参数解决方法:用到的解码函数
iis urlrewrite文件
urlrewrite 4.0.3 jar