zoukankan      html  css  js  c++  java
  • URL重写的几种实现方式的总结

    http://blog.csdn.net/java2000_net/article/details/2935913

    URL重写,其实就是把带一大堆参数的url,变成一个看上去很规矩的url,主要目的是为了搜索引擎。

    举例

    /viewthread.jsp?id=1234
    /viewthread.jsp?id=1235
    /viewthread.jsp?id=1236

    重写后,可以用

    /viewthread/1234.htm
    /viewthread/1235.htm
    /viewthread/1236.htm

    我目前使用Tomcat+Apache,尝试过三种重写的方法

    一、Tomcat的过滤器
      最典型的就是用 urlReweite的类库。大家爱如果有经验,自己写也不是很麻烦。

    修改web.xml增加过滤器,然后配置个过滤的规则就可以了
    web.xml修改部分

    1.    <!-- Set URL Rewrite-->
    2.  <filter>
    3.   <filter-name>UrlRewriteFilter</filter-name>
    4.   <filter-class>
    5.    org.tuckey.web.filters.urlrewrite.UrlRewriteFilter
    6.   </filter-class>
    7.  </filter>
    8.  <filter-mapping>
    9.   <filter-name>UrlRewriteFilter</filter-name>
    10.   <url-pattern>/*</url-pattern>
    11.  </filter-mapping>

    过滤规则

    1.      <?xml version="1.0" encoding="utf-8"?>
    2. <!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 2.6//EN"
    3.         "http://tuckey.org/res/dtds/urlrewrite2.6.dtd">
    4. <urlrewrite>
    5.   <rule>
    6.   <from>/viewthread/(/d+).htm$</from>
    7.   <to>/viewthread.jsp?id=$1</to>
    8.  </rule>
    9. </urlrewrite>

    更多详情,请参考 http://www.java2000.net/p7782

    二、使用Apache的mod

    1.  
    2. # 去掉这个前面的#,启用它
    3. LoadModule rewrite_module modules/mod_rewrite.so
    4.  
    5. <VirtualHost _default_:80>
    6. # 其它的配置数据
    7. RewriteEngine On
    8. # 下面三行实现动态解析
    9. RewriteRule ^/viewthread/(/d+).htm$/viewthread.jsp?id=$1 [L,PT]
    10. </VirtualHost>

    详细参考这里: http://www.java2000.net/p5422

    三、使用系统的404错误进行
    也就是页面没找到的错误

    这个我就不写了,有兴趣的自己参考吧 http://www.java2000.net/p903



    总结
    第一种修改麻烦,但对于平稳运行的系统,是个不错的选择
    第二种需要配置Apache,但 Apache的重启速度很快,适合于有可能经常变得情况,而且Apache Mod的效率还是不错的
    第三种,最灵活,我一般简单的应用都是用这个实现的。

  • 相关阅读:
    XP系统无法安装net framework 4.0 解决方法
    StructureMap DI & IoC 工具介绍
    Castle ActiveRecord学习实践(7)级联
    Error.popStackFrame 函数
    抽象泄漏(leaky abstraction)
    [Exception]IIS6:The entry "*" has already been added的解决方法
    ASP.NET 设计模式 读书摘记2
    PHP模块开发(一) PHP环境搭建
    PHP函数HTTP 相关函数
    PHP函数FTP文件传输函数
  • 原文地址:https://www.cnblogs.com/ttjava/p/3641014.html
Copyright © 2011-2022 走看看