2011-07-26 14 views
3

何らかの理由で、UrlRewriteFilterを使用して、何らかの理由でSpring MVCプロジェクトのクエリ文字列でURLから ".jsp"を削除する必要があります。UrlRewriteFilterを使用してクエリ文字列を含むURLから ".jsp"を削除する方法

は例えば、私は様々なルールを試してみました

http://localhost:8080/admin/project.jsp?m_product=GA&m_code1=QULQ2U 

http://localhost:8080/admin/project?m_product=GA&m_code1=QULQ2U 

に変更したいが、ない成功。例えば

、私は

<rule> 
    <from>/admin/project.jsp?(.+)</from> 
    <to type="redirect">/admin/project?$1</to> 
</rule> 

としてルールを設定するとき、私は前に疑問符を逃れるために、次のルールを使用する場合UrlRewriteFilterが

admin/project?p 

admin/project.jsp?m_product=GA&m_code1=QULQ2U 

を変更しますクエリ文字列

<rule> 
    <from>/admin/project.jsp\?(.+)</from> 
    <to type="redirect">/admin/project?$1</to> 
</rule> 

UrlRewriteFilterはURLを書き換えません。

あなたのお手伝いがありがとうございます。 VIEW助けのため

+0

としてページに書き込まれるように、ルール

<outbound-rule> <from>^/?([a-z]+)(.(jsp|jspx))$</from> <to>$1</to> </outbound-rule> 

の下に使用しますURLパスのみで動作しています(クエリ文字列は含まれていません。クエリを処理するには、 ''を使用するか、 '文字列)。したがって '?'は前の文字 'p'(' jsp')をオプションにするので、最初のルールはどんな形でも動作します。第2の規則では、あなたは '?'必要な文字を作った。それは常に存在しなければならない。 '\?(。+)'の代わりに '(\?(。+))?'を試し、 '$ 1'を' $ 2'に置き換えてください。 (** P.S。**は一般的なアイディアですが、私はUrlRewriteFilterにはあまり慣れていません) – LazyOne

答えて

2

感謝を:

0

は、あなたではなく、そのようなタスクのためのコントローラを使用する必要がありますし、安っぽいJSPは、行うことになっているものをやらせる一般的なルールとして

<rule> 
    <from>/admin/project\.jsp\?(.+)</from> 
    <to type="redirect">/admin/project?$1</to> 
</rule> 

を試してみてください。

問題は解決されました。目標を達成するために

、私はトリックを転送するためにリダイレクトを交換することである

<rule> 
    <from>/admin/project.jsp(.*)</from> 
    <to type="forward">/project</to> 
</rule> 

にルールを変更しました。 OCPsoft Rewrite | URLRewriteFilter

2

、これは一つのルールを指定するのと同じくらい簡単になります:

.addRule(Join.path("/admin/project") 
      .to("/admin/project.jsp") 
      .withInboundCorrection()); 

これは、インバウンド・フォワード、アウトバウンドHTML交換の両方を処理し、さらに/新しい、古いの.jsp URLからリダイレクト誰かが古いURLを要求するか、古いブックマークを持っている場合は、admin/project URL。

クエリ文字列は自動的に処理されるため、正規表現について心配する必要はありません。

3

プロジェクトから拡張子(.jsp)を削除する場合は、TuckeyのURL書き換えフィルターを使用すると便利です。

From 
    http://locatohost:8080/urlrewrite/feedback.jsp 
To 
    http://locatohost:8080/urlrewrite/feedback 
<?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 4.0//EN" 
"http://www.tuckey.org/res/dtds/urlrewrite4.0.dtd"> 
<urlrewrite> 
    <rule> 
    <from>^/?([a-z]+)$</from> 
    <to>/$1.jsp</to> 
    </rule> 
</urlrewrite> 

そして、あなたはその逆にしたい場合は(あなたが削除することを意味します。ページのハイパーリンクからJSP)、あなたが

<LI><A href="complaints.htm">Complaints</A></LI> 

を使用する場合、私はデフォルトの ` で理解で、それは`

<LI><A href="complaints">Complaints</A></LI>