Tuckey UrlRewrite を使用して URL ルールを設定しています。これまでのところすべてが機能していますが、デフォルトのページに苦労しています。
目的: - 既存のファイルと一致しない要求。または - 以前のルールに一致しないリクエストは ... を通じて検索を開始する必要がありますsearch.jsf?q=
。これは、従来の Web サイトからのデッド リンクの可能性を処理し、404 ページをより機能的なものに置き換えることを目的としています (ユーザーが実際に探しているものを見つけやすくするため)。
部分的なコード (他のルールは 2 番目のものと似ていますが、「デフォルト」ルールのみがクラッシュします):
<rule>
<name>Home</name>
<from>^/$</from>
<to type="forward" last="true">/home.jsf</to>
</rule>
<rule>
<name>Contact Us</name>
<from>^/contact_us/?$</from>
<to type="forward" last="true">/contactUs.jsf</to>
</rule>
<rule>
<name>Default + 404</name>
<from>^/[^\s]+$</from>
<to type="forward">^/search.jsf?q=$1</to>
</rule>
一致する物理ファイルがあってもに一致search.jsf
するため、スタック オーバーフローが発生します。[^\s]+
search.jsf
他のすべてのルールはlast="true"
、重複するべきではありません (明らかに、このキャッチオールを除く)。
私はUrlRewriteFilter マニュアルを読みましたlast="true"
が、理論的には、プロセスが他の一致を既に見つけた場合、他の一致をチェックするのを止める必要があるもの以外は何も見つかりませんでした。
どうもありがとうございました!
編集:答えがなく、この問題を解決できないため、別の方法を確認しました。こちらの質問を参照してください。