`

struts2 urlrewrite 404 错误解决办法

阅读更多

网站已经开发完毕,struts2+spring+hibernate。

    例如访问某文章的地址为:http://localhost:8080/showArticle/showArticle/showArticleAction.action?article.id=2 ,但是各个搜索引擎对动态页面的收录不是很好,所以想到网站静态化。

目前网站静态化大致有两种实现方式,一种就是生成html文件。另外一种就是对外界发布的时html地址,但是服务器内部依然时动态地址,这种实现方式又成为伪静态。由于项目已经开发完毕本人又比较懒所以选择伪静态实现网站的静态化。这里选用的是urlwrite。

下载了urlrewritefilter-2.5.0.zip,下载地址自己到网上检索下。

网站伪静态化步骤:

    1、下载后把urlrewrite-2.5.2.jar包添加到工程中。

    2、在web-info下建立urlrewriter.xml 内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<urlrewrite>
 <rule>
   <from>/showArticle_([a-z0-9]+).html</from>
         <to type="forward">/showArticleAction.action?article.id=$1</to>
 </rule>
 <rule>
   <from>/showList.html</from>
         <to type="forward">/showListAction.action</to>
 </rule>
</urlrewrite>

       3、在web.xml中添加flter,代码如下:

<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>
 </filter-mapping>

注意:该filter要在Struts的filter之上

 

加入到工程后测试,发现转向到action的时候总是报404的错误,

修改为跳转到静态页面或者jsp可以跳转,但是换成Action路径不成。

分析原因是struts2的拦截器在作怪,尝试把to标签添加type=redirect,运行,可以跳转,但是由于是重定向,地址栏的地址又变成struts2的样子。

但是不加redirect还是报404,

分析,可能是struts2转向机制的问题,

查阅资料,说是要在配struts2拦截器的时候需要加:

<dispatcher>REQUEST </dispatcher>  
<dispatcher>FORWARD </dispatcher>  
<dispatcher>INCLUDE </dispatcher>


这三个节点。

但是个人感觉只要可以分发FORWARD就应该可以。

所以修改代码如下:

<filter-mapping>
   <filter-name>struts2</filter-name>
   <url-pattern>/*</url-pattern>
   <dispatcher>FORWARD</dispatcher>  
</filter-mapping>

运行,正常,还有待大量测试。

发布项目,在浏览器地址栏敲:http://localhost:8080/showArticle/showList.html 就会被urlrewriter定位到http://localhost:8080/showArticle/showListAction.action  路径下了。

http://localhost:8080/showArticle/showArticle_1.html  就会被urlrewriter定位到http://localhost:8080/showArticle/showArticleAction.action?article.id=1 路径下

总结:

1、配置web.xml的时候,rewrite一定要在strtus2的上面。

2、strtus2的filter-mapping一定要添加:<dispatcher>FORWARD</dispatcher>

分享到:
评论

相关推荐

    Struts2下使用urlReWrite的最简实例(MyEclipse工程)

    `urlRewrite`是Tuckey开源组织提供的一个URL重写过滤器,它能够帮助我们在Struts2应用中实现这个目标。 在这个最简实例中,我们将探讨如何在MyEclipse环境中集成Struts2和urlRewrite,创建一个基本的应用来演示URL...

    使用urlrewrite重写struts2的action

    在这个场景中,我们将深入探讨如何使用`URL Rewrite Filter`来重写Struts2的Action。 首先,让我们理解`URL Rewrite Filter`的基本概念。这个工具提供了一种方式,通过配置XML文件(如`urlrewrite.xml`)来定义一...

    urlrewrite2伪静态与使用文档(IIS)

    标题“urlrewrite2伪静态与使用文档(IIS)”涉及到的是在IIS(Internet Information Services)服务器环境中,使用urlrewrite2模块实现URL重写和伪静态功能的技术内容。URL重写是Web开发中的一项关键技术,它允许...

    struts2+spring3+hibernate4+urlrewrite

    本框架为struts2+spring3+hibernate4+urlrewrite(伪静态地址) Struts采用通配,web-inf下的urlrewrite.xml为伪静态配置文件,跳转到struts.xml进行对应

    IIS Urlrewrite2

    5. **错误页面重定向**:可以设置规则将404错误页面重定向到自定义的错误页面,提供更好的用户体验。 6. **网站迁移**:在网站迁移或域名更换时,URL重写可帮助自动将旧URL指向新URL,减少流量损失。 ### 三、IIS ...

    ssh2中的urlrewrite和Struts2的生成静态页面

    ### SSH2中的URLRewrite与Struts2生成静态页面 #### URLRewrite的理解与应用 在SSH2(Spring + Struts2 + Hibernate)框架中,URLRewrite是一种强大的工具,可以用于实现URL重写功能,使得网站的URL更加友好、易于...

    java urlrewrite解决默认页问题

    ### Java URL Rewrite 解决默认页面问题 在J2EE项目中使用URL重写(URL Rewrite)来优化URL结构,使其更加简洁、友好是常见的做法。然而,在实施过程中可能会遇到一些问题,比如默认页面的处理。本文将详细介绍如何...

    UrlRewrite例子

    UrlRewrite是一个强大的URL重写工具,常用于Java Web应用中,尤其是与Struts2框架结合使用时,能够帮助开发者优化URL结构,提高网站的SEO友好性和用户体验。在这个"UrlRewrite例子"中,我们将深入探讨UrlRewrite的...

    iis urlrewrite文件

    2. 错误页处理:将404错误页重定向到自定义的错误页面,提供更好的用户体验。 3. 域名重定向:将旧域名重定向到新域名,保证迁移后的链接有效。 4. URL规范化:确保URL始终以特定形式出现,例如强制使用www前缀或非...

    UrlRewrite.rar

    《URL重写技术详解——基于UrlRewrite工具的实践指南》 在Web开发领域,URL重写是一项重要的技术,它能够使网站的URL更加友好、简洁,提高用户体验,同时也有利于搜索引擎优化(SEO)。本篇文章将围绕“UrlRewrite....

    urlrewrite-maven-example.zip

    在本篇文章中,我们将深入探讨URLRewrite的核心概念和使用方法,并通过实例解析如何在项目中集成和配置。 URLRewrite 2.5.2是其较早的一个稳定版本,但随着时间的推移,开发团队已经推出了更新的2.6版本,新版本...

    urlrewrite3.04的demo

    **URLRewrite 3.0.4:优雅的URL管理工具** 在Web开发中,URL的设计和管理对于网站的用户体验和搜索引擎优化(SEO)至关重要。`urlrewrite`是一款优秀的Java库,专门用于处理URL重写,它使得动态网站能够展现静态化...

    URLrewrite-实例

    `URLrewrite`是一个基于Java的开源过滤器,它实现了Apache的mod_rewrite功能,广泛应用于Spring、Struts、JSF等Java Web框架中。它提供了强大的规则配置,使得开发者能够灵活地对URL进行重写和重定向。 在使用`URL...

    URLRewrite.dll

    - 错误页面重定向,当用户访问不存在的页面时,自动跳转到404错误页面。 在实际应用中,应遵循以下最佳实践: - 规则清晰:避免过于复杂的规则,确保每个规则都有明确的目标。 - 避免循环重写:检查规则是否存在...

    URLRewrite配置和使用

    URLRewrite配置和使用 URLRewrite是一种URL重写技术,它可以满足搜索引擎的要求,隐藏技术实现,提高网站的移植性,并满足美感的要求。下面将详细介绍URLRewrite的配置和使用。 1. 满足搜索引擎的要求 搜索引擎对...

    netcn_URLRewrite

    什么是UrlRewrite UrlRewrite 是 将动态页面转换为静态页面的一种技术 例如 您网站页面是 http: www yourdomain com news docread aspx id 123 为什么使用UrlRewrite: 1 处理这样的情形:你要更改你的web应用...

    UrlRewrite域名重写

    2. **正则表达式**:UrlRewrite规则中经常用到正则表达式来匹配和提取URL中的特定部分。熟练掌握正则表达式对于编写复杂的URL重写规则至关重要。 3. **条件组合**:有时候,我们可能需要多个条件一起满足才执行重写...

    url rewrite组件.rar

    2. **错误页面处理**:当用户尝试访问不存在的页面时,可以重定向到自定义的404错误页面,提供更好的用户体验。 3. **安全重定向**:将所有HTTP请求自动重定向到HTTPS,确保数据传输的安全性。 4. **负载均衡**:...

    urlrewrite 支持自定义多配置文件

    在网上找了很多都不合心意,就知道改了下源码,只改了org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.class 文件,如果担心安全的朋友,可以下载 4.0.3的jar 替换UrlRewriteFilter.class即可。 confPath 默认 ...

    urlrewrite完整示例2.6/3.2/4.0jar包

    在实际开发中,`URLRewrite`常用于Spring MVC、Struts等框架的项目,与这些框架配合使用,可以更好地管理应用程序的URL结构。 7. **注意事项**: - 配置文件的放置位置:通常放在WEB-INF目录下,确保不在公开访问...

Global site tag (gtag.js) - Google Analytics