您的位置:首页 > 其它

什么是url重写

2015-10-30 18:34 204 查看
什么是url重写?

URL 重写是拦截客户端传入 Web 请求URL并自动将其定向到到规则指定的 URL 的过程。比如浏览器发来请求 http://blog.mocoder.com/hello.html ,服务器自动将这个请求中定向为http://blog.mocoder.com/test.do?method=hello。

url重写有哪些好处呢?

1. 搜索引擎比较喜欢.html,.htm的(与.jsp,.php,.aspx,.cff相比),因为.html, .htm是静态的,更容易让引擎了解你网页的内容。而动态网页的内容是根据用户,来输出不同的内容,不容易让引擎吸收具体HTML内容。

2. 如果不用URL Rewriting将拓展名隐藏或改成.html,那么假如这个网站要换个技术或把动态页面换成静态,则需要寻找所有含有拓展名的连接,把连接所含URL进行拓展名修改(如从JSP换到PHP技术,则要寻找所有含有.jsp的页面,并把所有含.jsp的URL改成.php,费时费力)。URL Rewriting正好避免了这点,因为好的URL是能做到“不变应完变”的。

3. 防止某些黑客恶意攻击。有些大网站采用不同的技术开发不同功能的页面。而把拓展名改掉,让黑客无法确认此页面用的技术是什么,从而就无从下手。

4. 方便访问者使用。访问者不是程序员,他们不明白什么是.jsp,.php.aspx,他们只知道URL。所以统一把拓展名拿掉,或者同意把拓展名换为html,htm,有利于用户的使用。用户可以知道现在在你网站的位置,如何通过输入URL到某一页面。

url重写在php开发的web程序中应用十分广泛,当然,大多数的javaweb框架如springMVC、struts都有指定访问url的配置,但是不够灵活。

今天为大家介绍一款用户javaweb程序的rul重写工具:urlrewritefilter,同样支持正则表达式的哦!!

1、下载urlrewrite,官方下载地址:http://tuckey.org/urlrewrite/dist/urlrewritefilter-2.6.zip

2、修改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>

3.修改urlrewrite配置.xml

<?xml version=”1.0″ encoding=”utf-8″?>

< !DOCTYPE urlrewrite PUBLIC “-//tuckey.org//DTD UrlRewrite 2.6//EN”

“http://tuckey.org/res/dtds/urlrewrite2.6.dtd”>

<!–

Configuration file for UrlRewriteFilter
http://tuckey.org/urlrewrite/
–>

<urlrewrite>

< rule>

< from>^/([a-z]+)$</from>

< to type= “forward” >/world.jsp?id=$1</to>

< /rule>

< rule>

< from>^/world/(.*)$</from>

< to>/world.jsp?tid=$1</to>

< /rule>

< rule>

< from>^/(.*).html$</from>

< to>/test1/$1.jsp</to>

< /rule>

<outbound-rule>

< note>

The outbound-rule specifies that when response.encodeURL is called (if you are using JSTL c:url)

the url /rewrite-status will be rewritten to /test/status/.

The above rule and this outbound-rule means that end users should never see the

url /rewrite-status only /test/status/ both in thier location bar and in hyperlinks

in your pages.

< /note>

< from>/rewrite-status</from>

< to>/test/status/</to>

< /outbound-rule>

< /urlrewrite>

说明:rule是url重写规则,from是显示出来的地址,to是映射的实际地址,$1是重写参数,可以为多个,()里是匹配的正则表达式.

5、新建world页面:

好了,在项目中新建world.jsp,启动tomcat,输入
http://localhost:8080/mysite/world/1
mysite是你的项目名

实际上访问的是http://localhost:8080/mysite/world.jsp?tid=1

这样就简单的实现了伪静态的效果
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: