私のApache構成では、mod_rewriteを使用して外部アプリケーション(RewriteMap prgを使用)を呼び出してURLを書き換えます。それはうまく動作します。私が扱う必要があるのは、リクエストURLが私たちが探しているURLと特に一致しない境界条件です。また、外部アプリケーションからエラーが返された場合は、エラーページにリダイレクトする必要があります。ここでmod_rewrite RewriteRule if-then-else trouble
はコードです:
我々は古いASPスクリプト(SomeScript.asp)の要求を取得すると、Javaアプリケーションは、正しいURLをルックアップするために呼び出されます。正しいURLまたは "/ error"を返します。 "/ error"が返された場合、RewriteRuleはそれをエラーページに変更します。したがって、ルール1とルール2は結びついています。ルール1を実行する場合、ルール2を実行する必要があります。ルール1とルール2が一致する場合、ルール3は実行されません。ルール3は、403-禁止されたエラーを返すすべてのルールをキャッチします。
上記のコードは近いですが、それほどありません。キャッチオールファイナルルールはあまりにも多くをキャッチしています。ルール1が一致すれば、ルール3もそれをキャッチして403を返します。
ルール1と2が上記のように動作するようにするにはどうすればよいですか?一致しない場合、403エラーが返されますか?
おかげ
RewriteRule ^/SomeScript.asp(。*)$ $ {forwardURL:%{QUERY_STRING}} [C] RewriteRule ^/error(。*)$ /error.html [L] RewriteRule ^(。*)$ - [F] この結果、常に403が返されます。最後のケースは、最初のルールが成功すると常に一致します。私は戻り値に '/ error'を付けて、パラメータの問題があるかどうかを検出して、リクエストをエラーページに送ることができます。 – MonkeyWrench
醜いフォーマットについてごめんね... – MonkeyWrench
第1回がOKならあなたは2番目が一致しない場合にのみ3回目を得るでしょう。うまくいくはずです。あなたはApacheを再起動しましたか? RewriteLogおよびRewriteLogLevelディレクティブ – regilero