2011-06-28 4 views
1

JettyにURLリライティング機能を使用して、検索に適したURLを実装しようとしています。アプリケーションは以前はisapi dllを使用してIIS上で実行され、URLの再書き込みを実行しました。そのコンテキストでは、パス情報をクエリ文字列パラメータとして挿入します。jetty RewriteRegexRuleを使用してURLのクエリ文字列を変更する方法

私は桟橋で同じことをしようとすると404が発生します。クエリ文字列を省略すると、書き換えは機能しますが、重要な情報が欠落しています。クエリ文字列を再処理するようにRewriteRegexRuleに設定がありますか?

以外の作業例は

<Call name="addRule"> 
    <Arg> 
    <New class="org.eclipse.jetty.rewrite.handler.RewriteRegexRule"> 
     <Set name="regex">(/.*)</Set> 
     <Set name="replacement">/index.cfm?path=$1</Set> 
    </New> 
    </Arg> 
</Call> 

は削除でしょうか?その後のクエリ文字列とそれが動作します。

+0

もこれを見て、だけでなく、解決策を見つけることができなかっされて。 [RewriteRegexRule code](http://download.eclipse.org/jetty/stable-7/xref/org/eclipse/jetty/rewrite/handler/RewriteRegexRule.html)は、置換文字列を明示的にサポートしているため、推測しかできません[Request](http://download.eclipse.org/jetty/stable-7/xref/org/eclipse/jetty/server/Request.html)クラスにバグがあります。 :/ –

+0

私が探していたソースがJetty 8.1のように見えますが、これは[修正されたバグレポート](https://bugs.eclipse.org/bugs/show_bug.cgi?id=370081)です私が新しいバグを報告するために行ったときのみ)、[関連するコミット](https://github.com/eclipse/jetty.project/commit/cacc5aefa214fc3eae05eb93d964863bb71198a0)(バグレポートからリンクされていない; bugzillaそれは新しいコードが私が先に見ていたものであることを示しています、そして、うまくいけばそれを修正しています。 –

答えて

1

私が知る限り、Jettyで書き直しを実行するときにクエリー文字列を変更することはできません。リダイレクトを行うと可能ですが、それは私の要件を満たしません。

代わりに、Tuckey url rewriteフィルタがあります。それは動作しますが、フォームデータはJettyで使用すると失われます。

私はGlassfishに移動しました。Glassfishには、Tuckeyフィルタがうまく機能します。

0

RewriteRegexRuleは、Jetty 8.1がクエリ文字列を停止する前にバグがありました。

1)桟橋8.1.5のコピーをダウンロードし、適当な場所に解凍します。ここでは

は、私は私の突堤7のセットアップをアップグレードするために要した手順です。

2)は7

3をインストールし、既存の桟橋から設定渡っコピー)mailing list threadは、コンテキストのコンフィグでDOCTYPEを逃すような問題を識別して下さい)java.lang.String cannot be cast to org.eclipse.jetty.xml.XmlParser$Node

4愚かなエラーを受信します。

5)<?xml...行の後に<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">を置き、<Context...行の前に置きます。

6)Railo CFML Servletの適切なjarファイルをlib/extディレクトリにコピーします。

7)不可解なエラーを受信:Caused by: java.lang.NoSuchMethodError: org.slf4j.spi.LocationAwareLogger.log(Lo rg/slf4j/Marker;Ljava/lang/String;ILjava/lang/String;[Ljava/lang/Object;Ljava/la

8)明らかに何か桟橋と衝突を無効にRailoのlib/ext/slf4j-api.jarを使用していますが。

9)桟橋が起動しますが、原因別のエラーにコンテキストを処理することを拒否:java.lang.NoSuchMethodError: org.objectweb.asm.ClassReader.accept

10)org.objectweb.asmに関連するjarファイルを探します。それを見つけるにはlib/annotations; start.iniの注釈に関連する設定を見てください。注釈を無効にする。

11)最終的に埠頭は正常に起動し、コンテキストを有効にします。

12)Jettyを停止し、元の書き換えルールを復元して再起動します。できます!今


作業per-context rewritingを取得する方法について参照するには...

関連する問題