0

私はそのような単純なルールを構築するのに苦労しています。クラス1変数が4000から5999の間にない場合にのみ、URLをクリーンアップしたいと思います。

ユーザーがに行くとき、f?p=3999:1:1:::::私はユーザーがに向けられることを望みます/3999/1?vars=:1:::::。ユーザーがf?p=4000:1:1:::::URLにアクセスした場合、URLはクリーンアップされません。

これが私がこれまでに持っているものです。これは、範囲を除いて、私が望むことを実行します。誰か助けてください!:

<rule match-type="regex">
    <note>
        FROM= URL typed in by user
        TO= URL user is redirected to.
    </note>
    <from>^/f\?p=([0-9A-Za-z]+):([0-9A-Za-z]+):([0-9A-Za-z]*)(.*)$</from>
    <to type="redirect">/$1/$2?vars=$3$4</to>
</rule>

Lindrianが提供するソリューションを使用して、コードに挿入し、目的の結果を得ることができました。

最終的な解決策:

<rule match-type="regex">
<note>
    FROM= URL typed in by user
    TO= URL user is redirected to.
</note>
<from>^/f\?p=((?:[0-3]|[6-9])[0-9]*|[54]\d{4,}):([0-9A-Za-z]+):([0-9A-Za-z]*)(.*)$</from>
<to type="redirect">/$1/$2?vars=$3$4</to>

ここで行っているのは、URLRewriteFilterを使用してOracleアプリケーションのエクスプレスURLをクリーンアップすることです。ここでの問題は、APEXが相対参照を使用しているため、APEXにログインすると、リンクされたページがリンクされたページとして$ 1 / f?p...を検索することです。$ 1が存在しないため、これはエラーになります。そこで、開発UIのURLクリーニングをオフにしました

4

1 に答える 1

0

mod-rewrite コードについてはお手伝いできませんが、正規表現についてはお手伝いできます。正規表現はこのようなことを行うのに最適なツールではありませんが、実行できます。

から までの範囲の数字以外のすべての数字に一致する短い単純な正規表現を作成しまし40005999: http://regex101.com/r/aU5qC4

他のコードでこれを機能させることができれば幸いです。

幸運を。

于 2012-08-20T07:04:56.780 に答える