使用urlrewritefilter发现部分请求url报404

在SSH项目中使用org.tuckey的urlrewritefilter-4.0.4包,部分代码如下:

1.mvn依赖:

    <dependency>       
       <groupId>org.tuckey</groupId>
       <artifactId>urlrewritefilter</artifactId>
       <version>4.0.4</version>
    </dependency>

2.web.xml配置:

  <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>*.html</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
  </filter-mapping>

3.struts.xml配置

    <!--指定Struts2的 对象池创建工厂由spring负责创建 -->
    <constant name="struts.objectFactory" value="spring" />
    <!--匹配*.s2的请求都由struts处理 -->
    <constant name="struts.action.extension" value="s2" />
    <!--该属性设置Struts2是否支持动态方法调用,该属性的默认值为true。如果需要关闭动态方法调用,则可设置该为false -->
    <constant name="struts.enable.DynamicMethodInvocation" value="true" />
    <!-- 开发模式下使用,这样可以打印出更详细的错误信息 -->
    <constant name="struts.devMode" value="false"/>
    <!-- struts配置文件改动后,是否重新加载 -->
    <constant name="struts.configuration.xml.reload" value="false"/>
    <!-- 设置在class被修改时是否热加载,,默认值为false(生产环境下使用),开发阶段最好打开(不会报500错误),发布时要设置为false -->
    <constant name="struts.convention.classes.reload" value="false" />
    <!-- 浏览器是否缓存静态内容。当应用处于开发阶段时,希望每次请求都获得服务器的最新响应,则可设置该属性为false -->
    <constant name="struts.serve.static.browserCache" value="false" />
    <!-- 是否每次HTTP请求到达时,系统都重新加载资源文件。默认值是false。在开发阶段设置为true会更有利于开发,但在产品发布阶段设置为false -->
    <constant name="struts.i18n.reload" value="false" />
    <!--解决乱码 -->
    <constant name="struts.i18n.encoding" value="utf-8"></constant>
    <!--文件上传临时保存文件夹 -->
    <constant name="struts.multipart.saveDir" value="D:\Java\"></constant>
    <!--文件上传大小限制   1G左右-->
    <constant name="struts.multipart.maxSize" value="1048576000" />
    <!-- Actin类名路径分割Convention通过如下规则确定URL的具体资源部分:去掉类名的Action部分。然后将将每个分部的首字母转为小写,用’_’分割 -->
    <constant name="struts.convention.action.name.separator" value="_" />
    
    <package name="backPackage" namespace="/back" extends="struts-default">
        <!-- 注册自定义拦截器 -->
        <interceptors>
            <interceptor name="backPrivilege" class="backPrivilegeInterceptor" />
            <!-- 配制默许的拦截器到拦截器栈 -->
            <interceptor-stack name="backInterceptorStack">
                <interceptor-ref name="backPrivilege" />
                <interceptor-ref name="defaultStack" />
            </interceptor-stack>
        </interceptors>
        <!-- 配置默认的拦截器-->
        <default-interceptor-ref name="backInterceptorStack" /> 
        <!-- 定义全局Result -->
        <global-results>
            <result name="blogin">/WEB-INF/pages/back/user/login.jsp</result>
            <result name="noqx">/WEB-INF/pages/error/noqx.jsp</result>
            <result name="404">/WEB-INF/pages/error/404.jsp</result>
            <result name="500">/WEB-INF/pages/error/500.jsp</result>
        </global-results>
        <!-- 定义全局异常映射 -->
        <global-exception-mappings>
            <exception-mapping exception="java.lang.Exception" result="500" />
        </global-exception-mappings>
        
        <!-- 后台列表页,默认ActionSupport类,返回"success" -->
        <action name="ui-*-*">
             <result>/WEB-INF/pages/back/{1}/{2}.jsp</result>
        </action>
    </package>

4. urlrewrite.xml配置

   <!--后台首页 -->
   <rule>
     <from>/bindex.html</from>
     <to type="redirect">/back/index.html</to>
   </rule>
   <rule>
     <from>/back.html</from>
     <to type="redirect">/back/index.html</to>
   </rule>
   <rule>
     <from>/bb/back.html</from>
     <to type="redirect">/back/index.html</to>
   </rule>
   <rule>
     <from>/back/index.html</from>
     <to>/back/bi!index_bl.s2</to>
   </rule>

那么现在问题来了,当我访问/bindex.html和/back.html都是没有问题的,但是当我直接访问/back/index.html和/bb/back.html的时候就会报404错误,不知道问题出在什么地方?还请各位帮我看下,谢谢了。

时间: 2024-10-03 23:07:28

使用urlrewritefilter发现部分请求url报404的相关文章

拷贝项目后,总是报404找不到页面,但配置没问题

哎!之前也做部署过文件的映射,但是忽然又遇到了问题又想不到了. 发生的前提为: 我之前在eclipse下创建了一个springmvc的项目,然后将此项目拷贝了下,然后重命名了,但是其中的一些配置文件也拷贝进去了(主要是项目里的.settings目录,但是里面的原项目名没有被改掉,从而出现新项目部署后,请求总是报404找不到页面) 原因是 tomcat 中的文件 server.xml <Context docBase="BankSimulateapp" path="/Ba

koa2 get请求后台正常接收参数 前端报404错误

刚学习一门技术时,总会踩一些坑. 前端代码 function del(mId){ $.ajax({ type:"get", url:"/delUser", data:{id:mId}, success:function(data){ console.log('成功了'); console.log(data); } }); } 后台接收请求代码 router.get('/delUser',async (ctx,next)=>{ console.log('接收请求

post请求远程url 报错“基础连接已经关闭...Authentication.AuthenticationException...远程证书无效”解决方案

当我们有时用代码编写post请求url远程地址会报“基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系. ---> System.Security.Authentication.AuthenticationException: 根据验证过程,远程证书无效.”这个异常,是因为远程url使用的域名 没有购买证书,所以用以下方式来解决: ps:在create url之前 设定“获取或设置用于验证服务器证书的回调”永远为true 即可,具体如下 post请求一定需要:System.Net.

IIS文件存在但报404问题解决

遇到一个奇怪的问题,在IIS7.5中,一些样式和JS文件存在,但访问就是报404. 根据网上搜索到的解决方法,发现解决不了,不同同样的问题引起的. 网上解决: 1.没有配置合适的MIME信息,通过添加合适的MIME信息来解决. 打开IIS配置,看了下,已经添加了样式文件的了,所以不是这个问题. 2.重新注册.net framework,原因是先安装的.net后安装IIS,没启用.aspx页面访问 HTTP 错误 404.2 - Not Found  由于 Web 服务器上的“ISAPI 和 CG

&lt;mvc:default-servlet-handler/&gt;导致controller失效,报404错误

最近在做ssm框架整合的一个小项目时,页面跳转一直有404错误,也没有报错提示.然后一步一步去找,终于发现是<mvc:default-servlet-handler/>的原因. 如上图所示,如果springmvc的配置文件这样写的话会报错. <mvc:default-servlet-handler/>这一行代码的意思是使用默认的Servlet来响应静态文件,因为在web.xml中使用了DispatcherServlet截获所有请求的url,包括jsp页面的关于js,css等引入.由

Adobe Dreamweaver CC MySQL连接 报404错误的解决方法

Adobe Dreamweaver CC MySQL连接时总报404报错,并给以下两个提示: 1) 在该服务器机器上没有测试服务器运行. 2) 为该站点指定的测试服务器没有映射到http://localhost/_mmServerScripts/MMHTTPDB.phpURL.请确认url前缀映射到了你站点的根上. 网上翻了一堆网站,折腾了两三天,发现可以按如下方法解决: 1)首先要在http://localhost/security/index.php配置mysql的访问密码(我用的是XAMP

有关百度一键分享链接到微信朋友圈无法打开网页,报404错误的解决办法,from=timeline&amp;isappinstalled=0,和伪静态规则有关

最近有好友反映用百度一键分享,分享网页链接到微信朋友圈的时候,发现链接无法打开,提示无法找到该页404错误,同样分享到QQ.微博等链接 能正常访问,这么明显的错误,百度和腾讯应该不会忽略吧. 接报后,我专门分析了一遍他公司的网站,确实是微信朋友圈无法分享网站链接.但是通过微信扫一扫能正常浏览网页,点击分享到朋友圈后,在  从朋友圈去访问的时候,提示无法找到该页,报404错误. 经反复检测,排除了分享代码的问题,和服务器配置问题.我开始怀疑伪静态规则,开启URL重写造成的,我关掉了伪静态,让网页形

SpringMVC中用@ParamVariable传递的参数包含斜杠(/)时,匹配不了报404错误的解决方案

今天做网站[标签]筛选功能时,出现了这么个奇葩的问题. 我是直接通过<a>标签中href来跳转的,url中包含汉字 <a href="/tags/标签A">标签A</a> 后台代码是这样的: @RequestMapping(value = "/tags/{tagname}") public String tags(@PathVariable String tagname) { // ISO-8859-1 ==> UTF-8

当CodeIgniter遇到Nginx报404错误的解决办法

由于CodeIgniter当初是设计在apache的,而apache对pathinfo是支持比较好的,所以一切都很nice.但是当你把写好的代码放到nginx上,傻眼了,可能出了CodeIgniter的welcom之外,其他都是404错误.而我惊奇的发现,CodeIgniter的官方文档竟然对在Nginx上的配置只字不提.而你百度"CodeIgniter Nginx 404"又能搜到一堆一堆的文章,奇葩的是几乎每个文档的配置方法貌似还不大一样.如果你搞好了还罢,搞不好就是配几个晚上都搞