我一些簡單的碼頭重寫規則令碼頭的重寫規則
<Configure id="FileServer" class="org.eclipse.jetty.server.Server">
<Get id="oldhandler" name="handler"/>
<Set name="handler">
<New id="Rewrite" class="org.eclipse.jetty.rewrite.handler.RewriteHandler">
<Set name="handler"><Ref id="oldhandler"/></Set>
<Call name="addRule">
<Arg>
<New class="org.eclipse.jetty.rewrite.handler.RewriteRegexRule">
<Set name="regex">/fake-uri/(.*)</Set>
<Set name="replacement">/real-uri/$1</Set>
</New>
</Arg>
</Call>
<Call name="addRule">
<Arg>
<New class="org.eclipse.jetty.rewrite.handler.HeaderPatternRule">
<Set name="pattern">/real-uri/*</Set>
<Set name="name">Cache-Control</Set>
<Set name="value">no-cache,no-store</Set>
</New>
</Arg>
</Call>
</New>
</Set>
</Configure>
如果我在瀏覽器請求/fake-uri/index.html
工作,響應包含哪些會被/real-uri/index.html
和送達應用的cache控制標題。但是,如果我重新排列規則以使標題規則高於正則表達式規則,則對/fake-uri/index.html
的請求將不存在緩存控制標頭。
似乎順序在這裏很重要,但我正在努力鍛鍊發生了什麼事情。據the doc
HeaderPatternRule - 添加/修改HTTP頭響應
我不確定默認的是什麼,但我一直在試圖處理
<Set name="rewriteRequestURI">true</Set>
。
它似乎並沒有改變什麼,但我想如果要求 URI被改寫,這不會有問題的URI重寫規則出現在相對於它適用於輸出頭重寫哪裏頭。事情甚至rewriteRequestURI設置爲true,標頭規則必須第二個所需的效果。那麼爲什麼訂單重要時,我已經設置rewriteRequestURI?
公平地說,重定向規則會導致新的請求,這就是規則再次運行的核心原因。 –
沒錯,只是爲了強調重寫規則沒有,這可能會讓人困惑,因爲它們在配置中看起來非常相似。 – Idlewood