伪静态URLRewrite访问路径加密

UrlRewrite

UrlRewrite就是我们通常说的地址重写,用户得到的全部都是经过处理后的URL地址,类似于Apachemod_rewrite。将我们的动态网页地址转化为静态的地址,如htmlshtml,还可以隐藏网页的真正路径,

比如:有时候需要将xxx.com/news/ type1/001.jsp 转化成显示路径为xxx.com/news_type1_001.html


有点如下:

一:提高安全性,屏蔽内部的url结构.

二:美化URL

三:更有利于搜索引擎的收入,通过对URL的一些优化,可以使搜索引擎更好的识别与收录网站的信息.


下载地址:

官网下载: http://urlrewritefilter.googlecode.com/svn/trunk/src/doc/manual/4.0/index.html#filterparams


实例展示

实例应用版本urlrewritefilter-4.0.3. Tomcat服务器端口定制为80

1. 创建web项目,增加 urlrewritefilter-4.0.3.jar 到 WEB-INF/lib 

2. 在WEB-INF/web.xml 增加urlrewritefilter过滤器 (near the top above any servlet mappings)

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

    <!-- 加到任何servlet映射的顶部,不然可能有些路径不能被过滤到
         http://urlrewritefilter.googlecode.com/svn/trunk/src/doc/manual/3.2/index.html
     -->
    <filter>
        <filter-name>UrlRewriteFilter</filter-name>
        <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
        <!-- 
            设备文件重加载间隔 (0默示随时加载, -1默示不重加载, 默认-1) 
        -->
        <init-param>
            <param-name>confReloadCheckInterval</param-name>
            <param-value>60</param-value>
        </init-param>
        
        <!-- 自定义配置文件的路径,是相对context的路径,(默认位置 /WEB-INF/urlrewrite.xml) -->
        <init-param>
            <param-name>confPath</param-name>
            <param-value>/WEB-INF/urlrewrite.xml</param-value>
        </init-param>
        
        <!-- 
            设置日志级别(将被记录到日志中)
               可以为: TRACE, DEBUG, INFO (default), WARN, ERROR, FATAL, log4j, commons, slf4j,
               比如 sysout:DEBUG(设置到控制台调试输出级别) 
            (默认级别 WARN) -->
        <init-param>
            <param-name>logLevel</param-name>
            <param-value>DEBUG</param-value>
        </init-param>
    </filter>
    
    <filter-mapping>
        <filter-name>UrlRewriteFilter</filter-name>
        <url-pattern>/*</url-pattern>
        <dispatcher>REQUEST</dispatcher>
        <dispatcher>FORWARD</dispatcher>
    </filter-mapping>
    
    
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
</web-app>

如果觉得/*这样的通配,并不符合我的预期,我只想对部分路径进行URL的重写,/*可能会造成我想象不到的或者是许微不足道的性能浪费.我把它改成了我需要的:

    <filter-mapping>
        <filter-name>UrlRewriteFilter</filter-name>
        <url-pattern>/member/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>UrlRewriteFilter</filter-name>
        <url-pattern>/article/*</url-pattern>
    </filter-mapping>

更多请参考: http://urlrewritefilter.googlecode.com/svn/trunk/src/doc/manual/3.2/index.html

3. 因为上面我们通过confPath定义了配置文件的路径,其实该默认位置就是在/WEB-INF/urlrewrite.xml,为了更能说明问题,所以显示指定下

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE urlrewrite
    PUBLIC "-//tuckey.org//DTD UrlRewrite 4.0//EN"
    "http://www.tuckey.org/res/dtds/urlrewrite4.0.dtd">

<urlrewrite>
    <rule>
        <from>/page/(.*).html</from>  
        <to>/index.jsp?page=$1</to> 
    </rule>
    
    <rule>
        <from>^/user/([a-z]+)/([0-9]+)$</from>
        <to>/index.jsp?nickname=$1&amp;age=$2</to>
  </rule>
</urlrewrite>

此时我们就可以通过url进行模拟了.

注意:

1.urlrewrite.xmlutf-8.所以如果你要在rule上加note标签为中文的话,也一定是要utf-8.

2.UrlRewriteFilter 最好是配置在web.xml的前面filter,不然有可能对有些url转变失去作用.

3.urlrewrite属性:有仅只有一个,rule属性::至少一个.

4.在写rule的时,如果有多个参数时,中间的连接符号&应该是&

5.ruleurl重写规则,from是显示出来的地址,to是映射的实际地址,$1是重写参数,它的值与from中的正则表达式是一一对应,可以为多个,()里是匹配的正则表达式在正则表达式^指定字符的串开始,$为指定结束

6.对于中文参数要使用(.*)作为参数转义.

4.重写url演示

实例1

<rule>
        <from>/page/(.*).html</from>  
        <to>/index.jsp?currentPage=$1</to> 
</rule>

index.jsp中的内容

  <body>
          <%
              String current = request.getParameter("currentPage");
           %>           
         当前页码<%=current %>
  </body>

执行效果如下:



实例2

Rule规则

<rule>
        <name>World Rule</name>
        <from>^/user/([a-z]+)/([0-9]+)$</from>
        <to>/index.jsp?nickname=$1&amp;age=$2</to>
</rule>

index.jsp中的内容

<body>
          <%
              String username = request.getParameter("nickname");
              int age = Integer.parseInt(request.getParameter("age"));
           %>           
         用户名: <%=username %> 年龄: <%=age %> <br>
</body>

执行效果如下:


所以,当我们在url中输入”http://localhost/urlrewrite/user/dennisit/23”时,实际执行的就是”http://localhost/urlrewrite/index.jsp?nickname=dennisit&age=23”

实例3

同理rule规则如下时

<rule>
        <from>^/page/(.*)$</from>
        <to type="redirect">/page/$1.action</to>
</rule>

这样我访问的:http://localhost/urlrewrite/page/test

则跳转到:    http://localhost/urlrewrite/page/test.action


实例4
Rule规则

    <rule>
        <from>^/([a-z]+)/([a-z]+)/([a-z]+)$</from>
        <to>/$1.do?method=$2&amp;uuid=$3</to>
    </rule>

index.jsp中添加如下链接:

    <a href="process/show/index">跳转</a>

当点击该链接,

地址栏中显示url是:http://localhost/urlrewrite/process/show/index,

其实际执行路径是:http://localhost/urlrewrite/process.do?method=show&uuid=index


转载请注明出处:[http://www.cnblogs.com/dennisit/p/3177108.html]


<script type="text/javascript"><!-- google_ad_client = "ca-pub-1944176156128447"; /* cnblogs 首页横幅 */ google_ad_slot = "5419468456"; google_ad_width = 728; google_ad_height = 90; //--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Nginx 是一款高性能的 Web 服务器和反向代理服务器,能够处理大量的并发连接并提供快速的响应。伪静态 URL 是指通过配置来将动态生成的 URL 转化为静态的 URL,使得 URL 更加直观和友好。 在 Nginx 中实现伪静态 URL 需要借助于 rewrite 模块的功能来实现。通过 rewrite 规则,可以将原本包含动态参数的 URL 重写为不包含参数的静态 URL。 例如,假设原本的动态 URL 是:www.example.com/index.php?id=1,经过伪静态转换后的静态 URL 可能是:www.example.com/article/1。 实现伪静态 URL 的步骤如下: 1. 首先,需要在 Nginx 的配置文件中加载 rewrite 模块。可以在 http 块中的顶层或者 server 块中进行配置。 2. 在 server 或者 location 块中添加 rewrite 规则。例如,通过正则表达式匹配原始 URL,并根据规则转换为静态 URL。 3. 针对不同的动态 URL,可以分别设置不同的 rewrite 规则。根据需要,可以将多个动态参数转为更加友好的静态 URL。 实现伪静态 URL 可以带来一些好处,例如: 1. 对搜索引擎更加友好:静态 URL 更容易被搜索引擎爬虫抓取和索引,提高网站的可见度和排名。 2. URL 更加直观:静态 URL 更加具有描述性,更容易让用户理解和记忆。 3. 提高安全性:通过伪静态将动态参数隐藏起来,可以减少攻击者对网站的破坏和攻击。 需要注意的是,在实现伪静态 URL 的过程中,需要确保 URL 的唯一性以及正确性。同时,还需要保证原本的动态功能不受影响,并且在页面访问时能够正确解析相应的参数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值