如何使用参数将URL重写为隐藏的URL

时间:2012-09-10 21:59:33

标签: tomcat6 tuckey-urlrewrite-filter

我想使用urlrewritefilter在URL中包含客户名称和语言,并将它们作为参数传递给隐藏的URL。这样该网站就会打开定制。语言斜杠之后的所有内容都应传递给隐藏的URL

http://www.x.com/customer1/en/ 重写为隐藏的网址。客户不应该看到应该调用的以下URL。

http://www.x.com/myapp/

并添加以下参数 语言= EN 的customerID = 3

我正在尝试此规则,但始终获得404 http状态错误

<rule match-type="regex">
 <from>^/customer1/en/([A-Za-z0-9\._/]+)$</from>
 <set name="customerID">3</set> 
 <set name="language">en</set>
<to type="forward">/myapp/$1</to>

</rule>

1 个答案:

答案 0 :(得分:0)

我假设你有一个带有context-root =“/”的webapp(没有交叉上下文)。

如果没有完成日志,也许你应该激活日志,看看你的规则是否被调用且匹配

您可以在过滤器配置中激活urlrewritefilter的日志(请参阅http://urlrewritefilter.googlecode.com/svn/trunk/src/doc/manual/4.0/index.html#filterparams)。

<filter>
  <filter-name>UrlRewriteFilter</filter-name>
  <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
  <!-- sets up log level (will be logged to context log)
       can be: slf4j, TRACE, DEBUG, INFO (default), WARN, ERROR, FATAL,
       sysout:{level} (ie, sysout:DEBUG)
       if you are having trouble using normal levels use sysout:DEBUG
       (default WARN) -->
  <init-param>
    <param-name>logLevel</param-name>
    <param-value>DEBUG</param-value>
  </init-param>

</filter>

您还必须添加日志记录的依赖项,例如slf4j-api,slf4j-log4j12,log4j-1.2。