`
zhaoshg
  • 浏览: 257429 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

UrlRewrite使用小结(转)

 
阅读更多

urlrewrite顾名思义,就是对URL进行重写,用户得到的全部都是经过处理后的URL地址,这样做我觉得好处有三:
一:提高安全性,可以有效的避免一些参数名、ID等完全暴露在用户面前,如果用户随便乱输的话,不符合规则的话直接会返回个404或错误页面,这比直接返回500或一大堆服务器错误信息要好的多
二:美化URL,去除了那些比如*.do之类的后缀名、长长的参数串等,可以自己组织精简更能反映访问模块内容的URL
三:更有利于搜索引擎的收入,通过对URL的一些优化,可以使搜索引擎更好的识别与收录网站的信息

使用urlrewrite的步骤如下:

首页,访问其官网:http://tuckey.org/urlrewrite/,我下载的是最新的目前还处于Beta版的urlrewritefilter-3.2.0,下载后将其中的urlrewrite-3.2.0.jar扔到需使用此功能项目的lib目录中去
其次,在web.xml中加入如下配置:

<filter>
        <filter-name>UrlRewriteFilter</filter-name>
        <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
        <init-param>
            <param-name>logLevel</param-name>
            <param-value>WARN</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其实就是个过虑器,它将会过虑用户的所有请求,符合规则的便对其进行重定向,具体的配置参数的使用方法见官方文档:http://urlrewritefilter.googlecode.com/svn/trunk/src/doc/manual/3.2/index.html
配置好web.xml后将下载的urlrewritefilter-3.2.0中的urlrewrite.xml配置文件放在WEB-INF目录下,这样在使用urlrewritefilter时它便自动到该目录下读取相关的配置了,我配置了个简单的,代码如下:

<rule>
	<from>/zh_CN/NewsInfo/NEWS_([0-9]+)</from>
	<to>/zh_CN/NewsInfo/view.do?method=view&amp;id=$1</to>
</rule>
    
<outbound-rule>
	<from>/zh_CN/NewsInfo.do/?method=view&amp;id=([0-9]+)$</from>
	<to>/zh_CN/NewsInfo/NEWS_$1</to>
</outbound-rule>

 

rule结点中form的规则默认使用的是正则表达式来匹配的,当用户访问服务器时的URL会与该配置相比较,如果符合规则就会按照下面to结点中的配置对其进行跳转,其默认是forward跳转,具体配置可见官网文档。
outbound-rule结点是服务器解析后的页面URL对外表现的形式,配置与上面的大体相同,如我一新闻链接代码在JSP中书写的形式如下:

<c:url var="news_url" value="/zh_CN/Press/view.do?method=view&id=${cur.id}&msg=Press" />
<li>· <a href="${news_url}" mce_href="${news_url}" target="_blank" title="${cur.titleSub}">${cur.title}</a></li>

 

经服务器解析后,最终显示在页面中的将变成:

<li>· <a href="/项目名/zh_CN/NewsInfo/NEWS_9999" mce_href="项目名/zh_CN/NewsInfo/NEWS_9999" target="_blank" title="${cur.titleSub}">新闻标题</a></li>

 

当用户点击此链接后urlrewrite便用通过rule的配置重跳转到真正的访问地址,这样便很好的隐藏了真实地址
这其中有点是需要注意的,引用官网中的一段话:

写道
Using the example above JSP's with the code
<a href="<%= response.encodeURL("/world.jsp?country=usa&city=nyc") %>">nyc</a>
will output
<a href="/world/usa/nyc">nyc</a>

Or JSTL
<a href="<c:url value="/world.jsp?country=${country}&city=${city}" />">nyc</a>
will output
<a href="/world/usa/nyc">nyc</a>

Note, If you are using JSTL (ie, <c:url) this will work also.

 

意思就是说需要转化的链接不能直接写在a标签中,需要写在c:url或其他服务器需要解析的变量中,这样才能对其重新显示

分享到:
评论

相关推荐

    ReWrite学习笔记小结

    比如,下面,我要实现这样的URL: http://xxx.com/0725 http://xxx.com/0726 http://xxx.com/0727 … 上面xxx.com是一个记录《今天是》这样的历史内容的一个测试站点。上面链接的意思,就是显示07月25日的历史...

    Bitrac单用户博客 v1.21.0.2300 bulid 090430.rar

    另外注意服务器的 IIS 设置问题,不要选择判断文件是否存在,否则 URLRewrite 无法使用。另外升级的时候最好能在站点根目录下建立一个非空的文件 app_offline.htm。这样就会暂时关闭站点,安全更新。 默认管理员和...

    Bitrac单用户博客 v1.21.0 bulid 090404 多国语版.rar

    另外注意服务器的 IIS 设置问题,不要选择判断文件是否存在,否则 URLRewrite 无法使用。另外升级的时候最好能在站点根目录下建立一个非空的文件 app_offline.htm。这样就会暂时关闭站点,安全更新。 默认管理员和...

    SEO编程PHP中文版

    1.4 小结 第2章 SEO基础知识 2.1 SEO概述 2.1.1 链接价值 2.1.2 Google PageRank 2.1.3 可用性和可达性 2.2 搜索引擎排名因素 2.2.1 页上因素 2.2.2 可见的页上因素 2.2.3 不可见的页上因素 2.2.4 基于...

    Bitrac单用户博客 v1.14 bulid 081006 多国语版

    另外注意服务器的 IIS 设置问题,不要选择判断文件是否存在,否则 URLRewrite 无法使用。另外升级的时候最好能在站点根目录下建立一个非空的文件 app_offline.htm。这样就会暂时关闭站点,安全更新。 默认管理员和...

    Nginx的使用经验小结

    URL重写是Nginx的另一个强大功能,可以使用`rewrite`规则或`try_files`指令实现。例如,如果请求的文件不存在,则重定向到`index.php`处理。对于静态资源和动态内容的分离,Nginx可以通过`proxy_pass`进行反向代理,...

    LAMP架构搭建

    - `--enable-rewrite`: 支持URL重写 - `--enable-ssl`: 支持SSL加密 - `--with-pcre`: 指定PCRE库的路径 - `--with-apr`: 指定APR库的路径 - `--with-apr-util`: 指定APR-UTIL库的路径 - `--enable-modules=...

    Apache 防盗链的技术小结

    Apache服务器提供了一种强大的功能——Rewrite模块,它可以通过修改URL规则来达到防盗链的目的。以下是具体实现步骤: 1. **确认Rewrite模块已启用** 在Apache的配置文件`httpd.conf`中,确保Rewrite模块已经被...

    关于iis防盗链方法

    #### 小结 通过上述步骤,您可以有效地为IIS服务器配置防盗链功能,从而保护您的网站资源免受未授权访问的影响。需要注意的是,防盗链策略应定期审查和更新,以适应不断变化的安全威胁环境。 以上就是关于IIS防盗...

    ubuntu下apache服务器操作方法小结

    Apache有许多可选模块,如mod_rewrite用于URL重写,mod_ssl用于HTTPS支持。可以通过`a2enmod`和`a2dismod`命令来启用和禁用模块。 11. **故障排除** 如果遇到问题,可以查看错误日志,使用`tail`命令跟踪实时日志...

    详解HTTP状态码

    您可能感兴趣的文章:Nginx下301重定向域名的方法小结Apache Rewrite实现URL的301跳转和域名跳转比较详细的win2003 IIS6.0 301重定向带参数的问题解决方法IIS7.5下301重定向的设置方法(及伪静态后301重定向出错案例)...

    Zend Framework实例教程

    #### 六、小结 本教程通过逐步指引,介绍了如何从零开始搭建基于Zend Framework的应用环境,包括必要的软件安装、框架下载、目录结构配置、Apache服务器配置以及如何加载和使用Zend Framework的关键组件。通过实践...

    HTTP错误500.19解决方法(定义了重复的节点)

    打开服务器的asp.net页面时出现这个错误: ...无法访问请求的页面,因为该页的相关配置数据无效。... 您可能感兴趣的文章:Nginx下301重定向域名的方法小结Apache Rewrite实现URL的301跳转和域名跳转比

    初品cakephp 入门基础

    **小结**: 尽管上述文件中提到对cakephp的认识可能存在偏差,但所提供的知识点仍然反映了cakephp的基本使用方法和一些关键特性。cakephp的初学者可以通过上述流程和组件的了解,开始构建自己的应用程序。不过,随着...

Global site tag (gtag.js) - Google Analytics