`
qyf404
  • 浏览: 1590 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论
阅读更多
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修改部分

   <!-- Set URL Rewrite-->
<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>
过滤规则

     <?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">
<urlrewrite>
  <rule>
  <from>/viewthread/(\d+).htm$</from>
  <to>/viewthread.jsp?id=$1</to>
</rule>
</urlrewrite>

二、使用Apache的mod

# 去掉这个前面的#,启用它
LoadModule rewrite_module modules/mod_rewrite.so

<VirtualHost _default_:80>
# 其它的配置数据

RewriteEngine On
# 下面三行实现动态解析
RewriteRule ^/viewthread/(\d+).htm$ /viewthread.jsp?id=$1 [L,PT]
</VirtualHost>

三、使用系统的404错误进行
也就是页面没找到的错误
实例:
http://www.java2000.net/f29
会被自动转发到
http://www.java2000.net/forumdisplay.jsp?fid=29

因为系统并不存在f29,所以使用了404的错误处理页面来实现这个功能
页面代码如下
查看复制到剪切板打印
<%@ page language="java" contentType="text/html; charset=GBK" isErrorPage="true" pageEncoding="GBK"%>  
<%  
  response.setStatus(HttpServletResponse.SC_OK);  
  String key = (String) request.getAttribute("javax.servlet.forward.servlet_path");  
  if (key != null) {  
    int index = key.lastIndexOf("/");  
    if (index != -1) {  
      key = key.substring(index + 1);  
      if (key.startsWith("f") || key.startsWith("p")) {  
        try {  
          long id = Long.parseLong(key.substring(1));  
          String url = key.startsWith("f") ? "forumdisplay.jsp?fid=" : "viewthread.jsp?tid=";  
%>  
<jsp:forward page="<%=url+id%>"></jsp:forward>  
<%  
  return;  
        } catch (Exception ex) {}  
      }  
%>  
<jsp:forward page="<%=response.encodeURL("search.jsp")%>"><jsp:param name="keyword" value="<%=key %>" /></jsp:forward>  
<%  
  return;  
    }  
  }  
%>  
对不起,您请求的页面没有找到! 
总结
第一种修改麻烦,但对于平稳运行的系统,是个不错的选择
第二种需要配置Apache,但 Apache的重启速度很快,适合于有可能经常变得情况,而且Apache Mod的效率还是不错的
第三种,最灵活的。
分享到:
评论

相关推荐

    URL重定向,动态加载二级域名

    在IT行业中,URL重定向和动态加载二级域名是两种关键的技术,它们对于构建现代Web应用程序至关重要。下面将详细解释这两个概念及其应用场景。 首先,我们来理解URL重定向(URLRewriter)。URL重定向是一种网络技术...

    linux内核实现url重定向

    Linux内核实现URL重定向是一项复杂的技术,涉及到网络协议栈的深入理解和内核编程。在提供的代码中,可以看到几个关键的函数和结构体,它们共同构成了URL重定向的内核模块。 1. `tcp_newpack` 函数:这个函数用于...

    URL重定向

    URL重定向

    NET中URL重定向

    在.NET开发中,URL重定向是一种常见的技术,用于将用户请求的原始URL转换为不同的URL,这在优化网站结构、管理旧链接或者实现SEO友好URL等方面具有重要作用。本实例主要探讨了如何在.NET环境中实现URL重定向,特别是...

    IISURLRewrite2.0 IIS URL重定向

    **IIS URL重定向与IIS URL Rewrite 2.0** IIS(Internet Information Services)是微软提供的一个强大的Web服务器,广泛应用于Windows操作系统环境中。在IIS中,URL重定向和URL重写是两种非常重要的功能,它们对于...

    BHO实现拦截IE地址,URL重定向

    标题“BHO实现拦截IE地址,URL重定向”涉及到的是在Internet Explorer(IE)浏览器中使用Browser Helper Object(BHO)技术来监控并改变用户导航的行为。BHO是一种特殊的COM对象,它可以嵌入到IE浏览器进程中,提供...

    .net URL地址重写 重定向 源码

    2. **URL重定向**:URL重定向则是在客户端或服务器端改变请求的目标URL。这在网站结构变更或页面迁移时特别有用,可以确保旧链接依然能正确指向新的位置。ASP.NET中,可以通过`HttpResponse.Redirect()`方法实现临时...

    url重定向验证结果数据

    url重定向验证结果

    url重定向是否正确检查

    url重定向是否正确检查

    SpringCloud URL重定向及转发代码实例

    SpringCloud URL重定向及转发代码实例 Spring Cloud URL重定向及转发代码实例是Spring Cloud框架中一个重要的知识点,本文将详细介绍Spring Cloud URL重定向及转发代码实例的使用方法和示例代码。 一、重定向...

    nginx反向代理、均衡负载、缓存静态资源、URL重定向、读写分离.zip

    nginx反向代理、负载均衡、缓存静态资源、URL重定向、读写分离.zip

    ASP.NET中的URL重定向方法。使用微软DLL

    ASP.NET中的URL重定向方法。使用的是微软DLL提供的dll,在web.confif中简单配置就OK了。安装后有示例查看。

    PHP URL重定向

    在PHP中,URL重定向是一种常见的技术,用于将用户或搜索引擎从一个URL引导到另一个URL。这在多种情况下都很有用,比如网站结构更改、页面移动或者实现会话管理。本篇我们将深入探讨PHP中实现URL重定向的方法以及相关...

    bcm120(无OEM 增加QQ黑名单Url重定向功能修改ttl值为0防二级路由

    bcm120(无OEM 增加QQ黑名单Url重定向功能修改ttl值为0防二级路由

    【浏览器插件】URL Redirector URL重定向.zip

    浏览器插件 - URL Redirector:一键实现URL智能重定向,轻松跳转至目标页面。

    Apache Rewrite url重定向功能的简单配置

    1.Apache Rewrite的主要功能 就是实现URL的跳转和隐藏真实地址,基于Perl语言的正则表达式规范。平时帮助我们实现拟静态,拟目录,域名跳转,防止盗链等 2.Apache Rewrite的配置 Apache下的Rewrite配置主要有两种,...

    详解nginx配置url重定向-反向代理

    一、nginx 地址重定向 二、nginx 反向代理 1、地址重定向:是指当使用者浏览某个网址时,将他导向到另一个网址的技术。常用在把一串很长的网址,转成较短的网址。因为当要传播某网站时,常常因为网址太长,不好...

    docker-https-redirect:将任何 url 重定向到它的 https 版本

    将任何 url 重定向到它的 https 版本。 安装 docker pull getable/https-redirect 跑步 确保公开端口 80。 docker run -d --restart=always -p 80:80 --name redirector getable/https-redirect 开发 bash run.sh ...

    URLRedirector URL重定向 | 谷歌(Chrome)浏览器插件

    帮助你重定向特定网页到新地址,以解决 google CDN 无法访问、stackoverflow 无法加载等的问题 【插件开发者】 @ghost 【插件更新】 2019-05-06 09:30:56 【插件版本】 1.3.17 【插件标签】 高效...

    disuz伪静态,URL301重定向文件,适用dz所有版本

    在SEO中,301重定向用于告知搜索引擎旧的URL不再使用,并将其权重转移到新的URL,以避免丢失流量和排名。在Disuz中,设置301重定向可能是为了更新域名、整理网址结构或者合并多个论坛到一个新的URL。 `httpd.conf`...

Global site tag (gtag.js) - Google Analytics