0

次のURL書き換えルールがあります。

<ConfigRule>
     <LookFor>/([^/]*)/([^/]*)/([^/]*)/</LookFor>
     <Exclude>/Admin/(.*)</Exclude>
     <SendTo>~/CategoryDetails.aspx?url=$3&amp;fullurl=/$1/$2/$3/&amp;page=1</SendTo>
     <IgnoreQueryStringInMatch>true</IgnoreQueryStringInMatch>
</ConfigRule>

ここで、$ 1、$ 2、および$ 3は、それぞれ親グループ、親カテゴリ、およびカテゴリに相当します。私がやろうとしているのは、たとえば次のようなURLと一致させることです/cars/car-parts/wheels/

正規表現はURLパターンと一致しますが、同じ名前のカテゴリがある場合、たとえば名前/ url "wheels"の2つがある場合、別の親/グループの下にあるかどうかに関係なく、次のような奇妙な問題が発生します。 2つのうち1つだけにリダイレクトされます。

/bicycles/bicycle-parts/wheels/

/cars/car-parts/wheels/

両方とも同じページにリダイレクトされます。

犯人はこれだと思います:

<SendTo>~/CategoryDetails.aspx?url=$3&amp;fullurl=/$1/$2/$3/&amp;page=1</SendTo>

はURL?url=$3の最後の部分(ホイール)のみに一致するので、私が求めているのは、URLクエリ文字列にgroup + parent + categoryを含めて、3つのセグメントすべてに一致させる方法があると思います。終わり?

4

1 に答える 1

1

ページを生成する ASP スクリプト (CategoryDe​​tails.aspx)で、 urlの代わりにfullurlパラメータを使用することをお勧めします。3 つの階層レベルすべてを含むフル パスは、書き換えられた URL に既に渡されているため、ここで URL の書き換えを行う必要はありません。

于 2012-11-09T21:39:18.147 に答える