4

TuckeyのURLRewriterを試しています。

次のように、1つの簡単なルールを宣言しました。

<rule>
    <from>/user/([0-9]+)$</from>
    <to>/user.do?id=$1</to>
</rule>

リクエストはmyapp.com/user/29「myapp.com/user.do?id=29」にマッピングされると思います。これは正常に機能し、リクエストはバックに到着します。ただし、GUIで応答を表示すると、Firebugは次のように文句を言います。

ここに画像の説明を入力してください

ご覧のとおり、との間/roqket/user/resourcesがあります。それがどうやってそこにたどり着いたのか私には分かりません。削除すると、通常の動作中のリソース要求に戻ります。<rule>

手伝って頂けますか?私は何が欠けていますか?ありがとう!

4

2 に答える 2

1

js、style、imgの他のフィルターを定義する必要があります。

このようなもの:

<rule>
    <from>/img/**</from>
    <to>/img/$1</to>
</rule>
<rule>
    <from>/js/**</from>
    <to>/js/$1</to>
</rule>
<rule>
    <from>/style/**</from>
    <to>/style/$1</to>
</rule>

これらのフィルターは、ユーザーに対して定義するフィルターの前に宣言する必要があります。これらのルールは、フィルターに適用されるルールの前に一致し、問題を解決する必要があります。

編集します。

コメントについて:印刷画面に表示されるそのユーザーは、フィルターによって何らかの形で追加されます

それは正しくないと思います。つまり、フィルターは「ユーザー」をフィルターに追加しているフィルターではありません。問題は、リソースをどのようにインポートするかということだと思います。

おそらく、あなたはこのようなことをしています:

<script type="text/javascript" language="javascript" src="resources/js/lang.js"></script>

この例では、相対URIがアプリケーションコンテキストを満足せず、スラッシュなしで開始する方法を確認してください。このようなURLを使用すると、ブラウザは実際のパスを基準にしたパスでリソースを検索します。ブラウザにある場合http://localhost:8080/roqlet/user、結果は次のようになりますhttp://localhost:8080/roqket/user/theResource(「roqket」がアプリのコンテキストであると想定)。

したがって、これを行う必要があります。

<c:set var="ctx" value="${pageContext.request.contextPath}"/>

<script type="text/javascript" language="javascript" src="${ctx}/resources/js/lang.js"></script>

ここで、コンテキストを指定すると、URIは実際のコンテキストではなく、コンテキストを基準にして構築されます。http://localhost:8080/roqket/theResource

このドキュメントをご覧ください。

于 2012-11-06T14:04:16.887 に答える
0
<rule>
<condition type="request-uri" operator="notequal">\.(images|gif|jpeg|png|css|js|pdf|doc|ico|jsp|jpg)$</condition>
<from>............

これは、tuskeyurl書き換えフィルターからの要求を停止する方法です

于 2012-11-29T10:40:36.040 に答える