`
somebody
  • 浏览: 81309 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

tuckey urlrewrite 3.x的问题

    博客分类:
  • java
阅读更多
昨天晚上配置myblog的rewrite。发现一个奇怪的问题。由于现在使用的这个pjblog,为了让搜索引擎收录的连接有效。我想把原来的asp连接rewrite到我的新程序上面。所以有这样一条规则。

    <rule>
        
<from>^/article.asp\?id=(.*)$<!---->from>
        
<to type="redirect">/entry/$1.jhtml<!---->to>
    
<!---->rule>
     但是我这样的连接总是匹配不到,只要去掉那个?就可以了。这个正则表达式是没有问题的。/article.asp?id=64是可以匹配的到的。
    后来看3.0的manual (http://tuckey.org/urlrewrite/manual/3.0/)才发现原来是这个的问题。

<urlrewrite> element</urlrewrite>

The top level element.

Attribute Possible Value Explanation
default-match-type
(optional)
regex (default) All rules and thier conditions will be processed using the Java Regular Expression engine (unless match-type is specified on a rule).
wildcard All rules and thier conditions will be processed using the Wildcard Expression engine (unless match-type is specified on a rule).
decode-using
(optional)
utf8 (default) When URL is decoded UTF-8 will be used.
null Do not decode.
[encoding] Any string representing a supported character encoding eg, ISO-8859-1. See Java Charset Object for more info.
use-query-string
(optional)
false (default) The query string will not be appended to the url that the "from" element matches against.
true The query string will be appended to the url that the "from" element matches against.
use-context
(optional)
false (default) The context path will not be added to the url that the "from" element matches against.
true The context path will be added to the url that the "from" element matches against.

就是那个use-query-string 的问题,默认的是不使用query-string就是把?后面的都忽略了。所以就不能匹配到了。只要在<urlrewrite>里面加一个属性就可以了。
</urlrewrite>
<urlrewrite use-query-string="true">
    
<!---->urlrewrite>

 

分享到:
评论
3 楼 somebody 2007-01-23  
我用了filter的。我debug的时候看到了得到的是中文。
等有时间看看怎么改了。
我觉得它是在forward的时候没有encode回去。
2 楼 codeutil 2007-01-23  

中文问题要改源代码才能.
其实中文问题不能怪 tuckey urlrewrite,
而是servlet容器的问题.
比如:
<from>/u/([a-zA-Z0-9\u4e00-\u9fa5]+)/?$</from>
<to>/user.jsp?username=$1</to>

使用tomcat.则可以处理中文,但是,
比如url为:
http://localhost:8083/webapp/u/%C6%D5%CD%A8%D3%C3%BB%A7
源代码UrlRewriter.java里getNewChain方法,原本使用
String originalUrl = StringUtils.trim(hsRequest.getRequestURI());
来获取原始url,
而现在不知怎么的改用
String servletPath = hsRequest.getServletPath();   // /servlet/MyServlet

String originalUrl = servletPath;

,而在上述情况中,
第一种方法得到的originalUrl 是 "/u/%C6%D5%CD%A8%D3%C3%BB%A7"
第二种得到的却不是"/u/普通用户"
而是"/u/??",因为tomcat已经按iso8859-1编码解码了,却解的不正确.
接下来第128行的,urlrewriter自己又作了一次解码,从问号解码肯定没法得到正确的信息了
  originalUrl = URLDecoder.decode(originalUrl, conf.getDecodeUsing());
             
因此导致无法处理中文.

知道这个原因,改代码就很方便了.
但是,光是改这里还不够,虽然可以正确的转换成
"/user.jsp?username=普通用户",但是接下来的forward后,
后面的 user.jsp得到的 username还会乱码的.
所以,最好的方法就是先加上过滤器确定编码,然后再根据实际情况进行修正,使之支持中文.

乱码问题是servlet容器造成的,而不是 tuckey urlrewrite的问题


1 楼 somebody 2007-01-10  
还有一个就是中文的问题。没有找到解决方法。不知道有那位能人解决了的请指教。

相关推荐

    urlrewrite 支持自定义多配置文件

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

    urlrewrite包和配置文件

    在web.xml中配置UrlRewriteFilter,意味着我们需要声明一个过滤器条目,指定它的类名(`org.tuckey.web.filters.urlrewrite.UrlRewriteFilter`)以及配置文件的位置(通常是在&lt;context-param&gt;`中指定的`urlrewrite....

    urlrewrite-maven-example.zip

    &lt;filter-class&gt;org.tuckey.web.filters.urlrewrite.UrlRewriteFilter &lt;param-name&gt;logLevel &lt;param-value&gt;WARN &lt;param-name&gt;statusEnabled &lt;param-value&gt;true &lt;filter-name&gt;UrlRewriteFilter &lt;url...

    com.springsource.org.tuckey.web.filters.urlrewrite-3.1.0.jar

    jar包,官方版本,自测可用

    网站安全urlrewrite教程和jar包

    3. **URL规范化**:确保所有URL指向同一个资源时,格式保持一致,避免因URL重复导致的SEO问题。 4. **重定向**:当某个URL不再有效时,可以设置重定向规则,引导用户访问新的URL。 安装并配置`urlrewrite.jar`后,...

    urlrewrite地址重写实例配置说明

    &lt;filter-class&gt;org.tuckey.web.filters.urlrewrite.UrlRewriteFilter &lt;param-name&gt;logLevel &lt;param-value&gt;info &lt;filter-name&gt;UrlRewriteFilter &lt;url-pattern&gt;/*&lt;/url-pattern&gt; &lt;dispatcher&gt;REQUEST ...

    java urlrewrite解决默认页问题

    &lt;filter-class&gt;org.tuckey.web.filters.urlrewrite.UrlRewriteFilter &lt;filter-name&gt;UrlRewriteFilter &lt;url-pattern&gt;/*&lt;/url-pattern&gt; ``` **2. `urlrewrite.xml` 配置:** ```xml ^/ &lt;to type="forward"&gt;...

    urlrewrite 4.0.3 jar包.rar

    &lt;filter-class&gt;org.tuckey.web.filters.urlrewrite.UrlRewriteFilter &lt;param-name&gt;logLevel &lt;param-value&gt;info &lt;param-name&gt;statusPath &lt;param-value&gt;/urlrewrite-status &lt;filter-name&gt;...

    urlRewrite

    DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 3.2//EN" "http://tuckey.org/res/dtds/urlrewrite3.2.dtd"&gt; &lt;urlrewrite&gt; 重写index.jsp成index.html&lt;/note&gt; &lt;note&gt;example:/index.html&lt;/note&gt; ...

    URLRewrite帮助文档

    &lt;filter-class&gt;org.tuckey.web.filters.urlrewrite.UrlRewriteFilter &lt;filter-name&gt;UrlRewriteFilter &lt;url-pattern&gt;/*&lt;/url-pattern&gt; ``` 这段配置表示将所有的URL请求都交由`UrlRewriteFilter`处理。 ...

    urlrewrite 3.2.0 java包

    **URLRewrite 3.2.0 for Java:详解与应用** URLRewrite 是一个功能强大的URL重写和转换工具,适用于Java环境。它基于Apache的Tuckey项目,为Web应用程序提供了类似于Apache HTTP服务器的mod_rewrite模块的功能。在...

    URLrewrite-实例

    &lt;filter-class&gt;org.tuckey.web.filters.urlrewrite.UrlRewriteFilter &lt;param-name&gt;logLevel &lt;param-value&gt;WARN &lt;param-name&gt;confPath &lt;param-value&gt;/WEB-INF/urlrewrite.xml &lt;filter-name&gt;...

    UrlRewrite实现伪静态

    &lt;filter-class&gt;org.tuckey.web.filters.urlrewrite.UrlRewriteFilter &lt;filter-name&gt;UrlRewriteFilter &lt;url-pattern&gt;/*&lt;/url-pattern&gt; &lt;dispatcher&gt;REQUEST &lt;dispatcher&gt;FORWARD ``` - **编写url...

    urlrewrite

    URLRewrite是基于Apache开源项目Tuckey开发的一款强大的URL管理过滤器,它可以方便地进行URL重写和URL映射,使得复杂的服务器端请求路径可以被转换为简洁、易读的URL。在Java Web应用程序中,URLRewrite常用于隐藏...

    urlrewrite_demo

    &lt;filter-class&gt;org.tuckey.web.filters.urlrewrite.UrlRewriteFilter &lt;param-name&gt;logLevel &lt;param-value&gt;DEBUG &lt;param-name&gt;confFile &lt;param-value&gt;/WEB-INF/urlrewrite.xml &lt;filter-name&gt;...

    urlrewrite的简单搭建

    标题 "urlrewrite的简单搭建" 涉及到的知识点主要集中在使用URL重写工具 `UrlRewriteFilter` 上,这是一个基于Java的开源过滤器,用于处理和重写HTTP请求的URL,通常与Web应用程序(如Spring MVC或Struts)一起使用...

    ss3ex中使用UrlRewrite

    在SS3EX框架中,UrlRewrite的使用是为了解决传统URL模式中参数过多、过于复杂的问题,提供一种更简洁、更美观的URL表示方式。下面将详细介绍SS3EX中使用UrlRewrite的相关知识点。 首先,URL重写主要是通过配置文件...

    urlrewrite 完整实例,可直接运行。支持多个参数传递

    &lt;filter-class&gt;org.tuckey.web.filters.urlrewrite.UrlRewriteFilter &lt;param-name&gt;logLevel &lt;param-value&gt;WARN &lt;param-name&gt;statusEnabled &lt;param-value&gt;true &lt;filter-name&gt;UrlRewriteFilter &lt;url-...

    java urlrewrite jar及简单配置

    &lt;filter-class&gt;org.tuckey.web.filters.urlrewrite.UrlRewriteFilter &lt;filter-name&gt;UrlRewriteFilter &lt;url-pattern&gt;/*&lt;/url-pattern&gt; &lt;dispatcher&gt;REQUEST &lt;dispatcher&gt;FORWARD ``` 这段代码告诉服务器...

    UrlRewrite例子

    首先,UrlRewrite是Tuckey开源组织提供的一款过滤器,它基于Apache的开源项目 mod_rewrite 的思想,实现了在Servlet容器(如Tomcat)中的URL重写功能。通过在web.xml中配置UrlRewriteFilter,我们可以定义一系列规则...

Global site tag (gtag.js) - Google Analytics