3

古い JSP ベースの Web アプリケーションを Spring MVC コントローラーに移動し、リダイレクトにurlRewriteFilter ( http://tuckey.org/urlrewrite/ ) を使用しています。

パラメーターを使用して古い JSP をコントローラー ビューに永続的にリダイレクトする必要があります。

FROM: /products/product-detail.jsp?productId=666
TO: /product-detail?id=666

ここで重要なことはtype="permanent-redirect"、リダイレクトを SEO フレンドリーにする必要があるため、使用することです。

私は urlRewriteFilter を使用する多くの例と投稿を見てきましたが、すべてパラメーターなしのプレーンな JSP の書き換えを扱っています (例: some.jsp から /newurl へ)

これまでのところ、達成のみが forward を使用しています:

<rule>
    <name>Product Detail Old</name>
    <from>^/products/product-detail.jsp(.*)$</from>
    <to type="forward">/product-detail</to>
</rule>

しかしもちろん、これは URL をまったく書き換えません。

結果は次のとおりです。 /products/product-detail.jsp?productId=666

これも試しましたが、うまくいきません:

<rule>
    <from>/products/product-detail.jsp?(.+)</from>
    <to type="permanent-redirect">/product-detail?$1</to>
</rule>

その結果、/product-detail?p

urlRewriteFilter を使用して上記の基準を満たすルールを構築するのに役立つ人はいますか?

最も感謝して助けてください。

4

3 に答える 3

2

それ自体は書き換えられません...マニュアルで見つけたように<from>、クエリ文字列なしでURL文字列のみを使用しています。クエリ文字列を使用できるようにするには、追加する必要があります<urlrewrite use-query-string="true">。この後、魅力的に機能します! したがって、最終的なルールは次のとおりです。

<urlrewrite use-query-string="true">

<!-- more rules here if needed.... -->
<rule>
    <from>^/products/product-detail.jsp\?productId=([0-9])$</from>
    <to type="permanent-redirect">/product-detail?id=$1</to>
</rule>

</urlrewrite>
于 2013-03-29T04:04:06.517 に答える
1

以下は機能しますか?

<rule>
    <from>/products/product-detail.jsp\?productId=([0-9])</from>
    <to type="permanent-redirect">/product-detail?id=$1</to>
</rule>

編集

ごめん。エスケープしない限り、正規表現内の予約文字である疑問符の前の上記のスラッシュを忘れました。

これは昨日、主に私たちが導入していた古い mod_rewrite ルールから直接コピーしていることに気づきました。

于 2013-03-28T15:54:57.397 に答える
1

これに対処するには、いくつかの方法があります。使用できます

<urlrewrite use-query-string="true">

ただし、これはファイル内のすべてのルールに影響します。特定のルールのクエリ文字列をターゲットにするには、条件要素を使用します

<condition type="query-string">productId=([0-9])</condition>

その後、次のようにクエリ文字列を参照できます

<to type="permanent-redirect">/someUrl?%{query-string}</to>

あなたの場合、クエリ文字列を変更しようとしているので、キャプチャされた正規表現を参照したいかもしれません

<to type="permanent-redirect">/product-detail?id=$1</to>
于 2015-07-28T11:07:55.830 に答える