(转自:
http://www.blogjava.net/liuwentao253/archive/2006/08/31/66855.html)
appfuse中使用了UrlRewrite.实现了url的重写,这样有什么用处呢?上网搜了一把,大体上有以下好处:
1、满足搜索引擎的要求
某些搜索引擎不能支持动态页面的抓取,大量的信息就不能被潜在用户搜索到。用UrlRewrite技术你可以把 http://server/news.asp?id=111 变成 http://server/news/111.htm 这样他们就会被搜索引擎收录了。google虽然可以抓取动态页面,但是google对动态页面的评分一般低于静态页面。所以,对大量信息发布的网站,把网站地址改变成静态的绝对是值得的。
2、隐藏技术实现,提高网站的移植性
每个页面都挂着鲜明的.asp/.jsp这种开发语言的标记,可以一眼让人看出你的网站使用什么语言做的。而且在改变网站的语言的时候,你需要改动大量的链接。而且,一个页面修改了扩展名,他的pagerank也会随之消失,从头开始。我们可以用UrlRewrite技术隐藏我们的实现细节,这样修改移植都很方便,而且完全不损失pagerank。
3、满足美感的要求
对于追求完美主义的网站设计师,即使是网页的地址也要看起来简洁明快。形如 http://server/news.asp?channel=3&id=111 的网页地址,肯定是上不了完美主义者的法眼的,用UrlRewrite技术,你可以把他变成 http://server/news/3/111.htm 。
在应用中怎样集成它呢?看看appfuse中的实现方式。
<
filter
>
<
filter
-
name
>
rewriteFilter
</
filter
-
name
>
<
filter
-
class
>
org.tuckey.web.filters.urlrewrite.UrlRewriteFilter
</
filter
-
class
>
<
init
-
param
>
<
param
-
name
>
logLevel
</
param
-
name
>
<
param
-
value
>
commons
</
param
-
value
>
</
init
-
param
>
</
filter
>
<
filter
-
mapping
>
<
filter
-
name
>
rewriteFilter
</
filter
-
name
>
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
<
url
-
pattern
>
/**/
/*</url-pattern>
</filter-mapping>
urlrewrite
-
3.0
-
beta.jar
/
web
-
inf
/
urlrewrite.xml
<?
xml version
=
"
1.0
"
encoding
=
"
utf-8
"
?>
<!
DOCTYPE urlrewrite PUBLIC
"
-//tuckey.org//DTD UrlRewrite 3.0//EN
"
"
http://tuckey.org/res/dtds/urlrewrite3.0.dtd
"
>
![None.gif](/Images/OutliningIndicators/None.gif)
<!--
https:
//
urlrewrite.dev.java.net/manual/3.0 -->
<
urlrewrite
>
<
rule
>
<
from
>^/
user
/
(.
*
).html$
</
from
>
<
to type
=
"
forward
"
>/
editUser.html\
?
username
=
$
1
</
to
>
</
rule
>
</
urlrewrite
>
<
rule
>
<
from
>
/
aaa
/
bbb
/
([
0
-
9
]
+
)_([a
-
z]
+
).html
</
from
>
![None.gif](/Images/OutliningIndicators/None.gif)
<
to
>
/
..
/
aaa
/
bbb.jsp
?
id
=
$
1
&
name
=
$
2
</
to
>
</
rule
>
appfuse中使用了UrlRewrite.实现了url的重写,这样有什么用处呢?上网搜了一把,大体上有以下好处:
1、满足搜索引擎的要求
某些搜索引擎不能支持动态页面的抓取,大量的信息就不能被潜在用户搜索到。用UrlRewrite技术你可以把 http://server/news.asp?id=111 变成 http://server/news/111.htm 这样他们就会被搜索引擎收录了。google虽然可以抓取动态页面,但是google对动态页面的评分一般低于静态页面。所以,对大量信息发布的网站,把网站地址改变成静态的绝对是值得的。
2、隐藏技术实现,提高网站的移植性
每个页面都挂着鲜明的.asp/.jsp这种开发语言的标记,可以一眼让人看出你的网站使用什么语言做的。而且在改变网站的语言的时候,你需要改动大量的链接。而且,一个页面修改了扩展名,他的pagerank也会随之消失,从头开始。我们可以用UrlRewrite技术隐藏我们的实现细节,这样修改移植都很方便,而且完全不损失pagerank。
3、满足美感的要求
对于追求完美主义的网站设计师,即使是网页的地址也要看起来简洁明快。形如 http://server/news.asp?channel=3&id=111 的网页地址,肯定是上不了完美主义者的法眼的,用UrlRewrite技术,你可以把他变成 http://server/news/3/111.htm 。
在应用中怎样集成它呢?看看appfuse中的实现方式。
在appfuse的web.xml声明文件中有下面的类似声明:
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![ContractedBlock.gif](/Images/OutliningIndicators/ContractedBlock.gif)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
它所应用到的包存放在lib下的
![None.gif](/Images/OutliningIndicators/None.gif)
它和以上的两部分,以及
![None.gif](/Images/OutliningIndicators/None.gif)
构成了对url地址的美化
打开这个文件,我们可以看到以下的声明:
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
这样系统就完成了url地址的editUser.html?username=****的美化
如将
http://localhost/aaa/bbb.jsp?id=99&name=abc
表现为:
http://localhost/aaa/bbb/99_abc.html
配置如下:
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)