你能在Jetty中为每个web app jetty-rewrite.xml文件分配吗?

Adi*_*ady 5 rewrite jetty url-rewriting

每个Web应用程序/上下文是否有一种方法可以为该特定Web应用程序指定重写文件?我看到这个当前工作的唯一方法是在启动它时通过命令行.我想的可能是override.xml文件中的设置,甚至是上下文xml文件中的设置.

Joa*_*elt 1

如果您使用 context.xml 可部署项,您可以将 RewriteHandler 规则集成到应用程序特定的上下文 xml 中。

${jetty.home}/contexts/test.xml示例:这是在 jetty-distribution 中找到的context.xml 的替换。它添加了一条规则,只需在所有请求的响应上添加一个 cookie (visited=yes)。

<?xml version="1.0"  encoding="ISO-8859-1"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">

<Configure class="org.eclipse.jetty.server.handler.ContextHandler">
  <Set name="contextPath">/</Set>
  <Set name="handler">
    <New id="Rewrite" class="org.eclipse.jetty.rewrite.handler.RewriteHandler">
      <Set name="handler">
        <New class="org.eclipse.jetty.webapp.WebAppContext">
          <Set name="contextPath">/</Set>
          <Set name="war"><SystemProperty name="jetty.home" default="."/>/webapps/test.war</Set>
          <Set name="extractWAR">true</Set>
          <Set name="copyWebDir">false</Set>
          <Set name="defaultsDescriptor"><SystemProperty name="jetty.home" default="."/>/etc/webdefault.xml</Set>
          <Set name="overrideDescriptor"><SystemProperty name="jetty.home" default="."/>/contexts/test.d/override-web.xml</Set>
        </New>
      </Set>
      <Set name="rewriteRequestURI">true</Set>
      <Set name="rewritePathInfo">false</Set>
      <Set name="originalPathAttribute">requestedPath</Set>

      <!-- add a cookie to each path visited -->
      <Call name="addRule">
        <Arg>
          <New class="org.eclipse.jetty.rewrite.handler.CookiePatternRule">
            <Set name="pattern">/*</Set>
            <Set name="name">visited</Set>
            <Set name="value">yes</Set>
          </New>
        </Arg>
      </Call>
     </New>
  </Set>
</Configure>
Run Code Online (Sandbox Code Playgroud)

要验证此规则是否有效,请启动 jetty,转到http://localhost:8080/然后使用“Sessions”测试组件,您将看到它visited=true在顶部显示为 cookie。