`
lfzhs
  • 浏览: 76295 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

java实现URL重写的三种方法

阅读更多
转自http://hi.baidu.com/superdafee/blog/item/25ab34cd9aadb5560fb34519.html

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的类库。如果有经验,自己写也不是很麻烦。也可以用现成的开源的免费的urlrewrite   filter. http://tuckey.org/urlrewrite/下载

修改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.xxx.net/f29
会被自动转发到
http://www.xxx.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的效率还是不错的
第三种最灵活,一般简单的应用可以用这个。
分享到:
评论

相关推荐

    java中的url重写

    UrlRewrite Filter 是一个基于 Java 的开源项目,它提供了一种灵活的方式来实现 URL 重写。它使用 Filter 来完成 URL 重写工作,从而不依赖于 WEB 服务器组件。使用 UrlRewrite Filter,可以根据需要定义不同的重写...

    Java WEB实现URL重写

    实现Java Web中的URL重写,我们可以使用几种不同的方法: 1. **使用Filter**:创建一个Servlet Filter,拦截HTTP请求,根据规则重写请求的URL。在Filter的`doFilter`方法中,可以修改`ServletRequest`对象的请求URI...

    JAVA 实现URL重写工具 UrlRewriter Java v2.0 RC1-urlrewriterjava

    在当前的项目开发过程中,我们采用了URL重写技术以提升网站地址的易读性,并确保搜索引擎能够更快地索引我们的站点。URL重写,简而言之,就是对网页地址进行优化美化的过程。众所周知,许多服务器都支持URL重写技术...

    java伪静态URL重写的方法

    实现Java伪静态URL重写通常依赖于第三方库,例如微软公司的UrlRewriter.jar组件。该组件是一个URL重写工具,它提供了一个XML配置文件,用于定义URL转换规则。下面是一个基于Struts2框架实现伪静态URL重写的详细步骤...

    URL重写的一个例子

    **实现URL重写的方法:** 1. **服务器配置**:大多数Web服务器(如Apache、IIS)都支持URL重写模块,通过配置规则文件(如Apache的`.htaccess`或IIS的`web.config`)来实现URL转换。 2. **框架内置支持**:许多Web...

    JAVA URL重写

    2. **掌握URL重写的基本思想及实现方法:** URL重写是一种通过在URL中添加额外参数来实现会话跟踪的技术。当用户禁用Cookie时,服务器可以通过URL重写的方式来保持会话的状态。 #### 二、实验内容概述 本实验的...

    struts2中实现URL重写

    总的来说,Struts2通过集成URLRewriteFilter,提供了一种简单且灵活的方式来实现URL重写,从而提高应用程序的用户体验和SEO友好性。在实际开发中,我们需要根据项目的需求来定制URL重写规则,确保URL既能符合设计...

    urlrewrite url地址重写

    - **UrlRewriteFilter**:这是一个基于Java的开源过滤器,常用于Spring MVC等Java Web应用中,通过web.xml配置实现URL重写。 **4. 使用UrlRewriteFilter** UrlRewriteFilter是Tuckey开发的非侵入式的URL重写工具...

    urlrewrite重写demo

    在Web开发中,URL重写是一种常用的技术,它能够帮助我们优化网站的URL结构,提高用户体验,并且对于搜索引擎优化(SEO)也具有积极影响。`URLRewrite`是Apache的开源项目Tuckey提供的一种URL重写工具,它可以在不...

    jsp 动态转静态 URL重写

    本篇文章将详细探讨“jsp动态转静态URL重写”的概念、重要性以及实现方法。 一、动态URL与静态URL的区别 1. 动态URL:动态URL通常包含“?”、“=”、"&"等特殊字符,用于传递参数给服务器执行相应的动态脚本,例如...

    JSP项目的URL重写

    **JSP项目的URL重写**是一种优化Web应用的技术,它允许我们将复杂的动态URL转换为更加友好、可读性更强的静态URL。这不仅有助于提升用户体验,也有利于搜索引擎优化(SEO)。在本项目中,我们使用了`...

    tomcat服务器以url重写的方式除去两个opencms

    4. **使用OpenCms的内部URL重写功能**:OpenCms提供了一种内置的URL重写机制,可以通过系统管理界面进行配置。这种方法不需要对服务器配置进行任何改动,但可能需要更深入的OpenCms知识。 在压缩包文件"OC除去两个...

    伪静态(url重写)

    **三、使用Java Filter实现URL重写** 1. **Filter接口**:Java Servlet规范定义了Filter接口,它允许开发者在请求到达目标Servlet之前或者之后对请求进行拦截和处理。我们可以通过实现`doFilter()`方法来实现URL的...

    JAVA实现URL rewrite伪静态_.docx

    在Java中实现URL重写(URL rewrite)是为了实现伪静态,这是一种优化网站SEO(搜索引擎优化)的技术。通过将动态URL转换为看似静态的URL格式,可以提高网站的可读性和搜索引擎友好性。以下是对给定代码的详细解释: ...

    java URL重写 禁用IP

    功能是在java的过滤器中实现的,思路是获取请求的信息,查看是否是禁止IP或相关的URL,在做处理

    另类URL重写

    三、URL重写的重要性 1. 用户体验:简洁、直观的URL有助于用户理解页面内容,提高点击率。 2. 搜索引擎优化(SEO):搜索引擎更喜欢结构清晰、关键词明显的URL,有利于提高排名。 3. 书签和分享:友好URL更容易被...

    JavaUrlRewrite实现网站URL重写过程实录编程

    JavaUrlRewrite是一款在Java应用中用于URL重写的开源库,它基于Tuckey的UrlRewriteFilter,常被用于Web应用程序中优化URL结构,提高用户体验,并有助于SEO(搜索引擎优化)。URL重写是将实际的服务器端地址转换为...

    urlrewrite重写URL伪静态请求路径.

    标题 "urlrewrite重写URL伪静态请求路径" 涉及到的是Web开发中的一个重要概念——URL重写,这是为了优化网站的SEO(搜索引擎优化)和用户体验而进行的一种技术手段。URL重写允许我们将复杂的动态URL转换为简洁、易于...

    Java URL重写器 v2.0 RC1.zip

    Java URL重写器 v2.0 RC1

    jsp的URL重写(内附说明)

    **JSP URL重写**是Web开发中一种重要的技术,主要应用于提高网站的SEO(搜索引擎优化)和用户体验。在JSP中,通过URL重写,我们可以将动态的、包含参数的URL转换为静态的、更易读的形式,使得URL看起来像普通的HTML...

Global site tag (gtag.js) - Google Analytics