2

GAEアプリの短縮URLを作成しようとしているので、UrlRewriteFilterを使用しましたが、正しく設定できません。基本的に、ユーザーには次の情報が与えられます。

  • test.com/012a-bc

リダイレクト先のページは

  • test.com/vote.jsp?id=012a-bc

現時点では、次のurlrewrite.xmlようなファイルで動作しています。

<?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>/([0-z]+)</from>
        <to last="true">/vote.jsp?id=$1</to>
    </rule>

</urlrewrite>

問題は、すべてのURLがこれにリダイレクトされることです。たとえば

  • test.com/thankyou.jsp?id=0123

引き続きvote.jspでページを実行します。URLが見つからない場合にのみリダイレクトするようにするにはどうすればよいですか?

4

1 に答える 1

2

次のルールはどうでしょうか。

<rule>
   <from>^/([\w-]+)$</from>
   <to last="true">/vote.jsp?id=$1</to>
</rule>

(ダッシュ文字)[\w-]+を含む少なくとも 1 つの任意の単語文字 (文字、数字、アンダースコア) です。-と を使用^$て、チェックされたテキストの先頭と末尾を固定します。


UrlRewriteFilter のドキュメントによると

ルールを実行すると、フィルターは (非常に単純化された) すべてのルールをループし、それぞれに対して次の疑似コードのような処理を行います。

Pattern.compile(<from> element); pattern.matcher(request url);
matcher.replaceAll(<to> element); 
if ( <condition> elements match && matcher.find() ) {
    handle <set> elements (if any)
    execute <run> elements (if any)
    perform <to> element (if any) 
}

そのため、先頭 ( ^) と末尾 ( $) の文字列正規表現アンカーを使用する必要があります。

于 2013-01-25T14:59:14.420 に答える