0

サーバーでIIS.net のURL 書き換えプログラムを使用して、URL 書き換えのルールを作成しています。Asp.NET 4.0 Web サイトに Page.aspx や News.aspx などのページがあります。

Page.aspx ( http://www.foo.com/Page.aspx?PageTitle=Fooからhttp://www.foo.com/Fooへ) のルールを作成すると、うまく機能します。

News.aspx ( http://www.foo.com/News.aspx?NewsTitle=Fooからhttp://www.foo.com/Fooへ) のルールを作成すると、それもうまく機能します。

しかし、News.aspx と Page.aspx の両方のルールを作成すると失敗します。プログラムはルールの順序に見えます。News のルールが最上位の場合、News.aspx Url が書き換えられ、Page.aspx Url の書き換えが失敗します。Page のルールが一番上にある場合、Page.aspx Url が書き換えられ、News.aspx Url の書き換えが失敗します。

この問題は、正規表現の一致が原因で発生すると思います。披露させて:

ここに画像の説明を入力

News.aspx のルールが一番上にあります。それでうまくいきます。しかし、Page.aspx をクリックすると、RewriteUserFriendlyURL1 のパターンが URL をキャッチし、News.aspx (アクション URL に表示) をリダイレクトしようとします。

私の説明が明確であることを願っています。

私の質問は次のとおりです。この問題を回避するにはどうすればよいですか? たとえば、Redirect.aspx という新しいページを作成して、すべてのページをここにリダイレクトできます。Redirect.aspx に対して 1 つのルールを作成できます。

しかし、これらのルールを設定することでこの問題を解決する別の方法が必要だと思います。

ありがとうございました。

4

1 に答える 1

0

問題は、RewriteUserFriendlyURL1とRewriteUserFriendlyURL2の正規表現がまったく同じであるため、それらがリストされている順序によって、最初に適用されるルールが決まることです。

あなたが成し遂げようとしていることは理解していますが、そのようには機能しません。URL書き換えモジュールが/Fooニュース記事なのかページなのかを知ることは不可能です。あなたの最善の選択肢は、おそらくニュースを下に置き、通常のページ/news/<title>を維持することです。/<title>その場合/news/、ニュースとページを区別するために使用できます。

したがって、RedirectUserFriendlyURL2とRewriteUserFriendlyURL2を同じに保ちながら、RedirectUserFriendlyURL1のアクションURLをに/news/{C:1}変更し、RewriteUserFriendlyURL1ルールのパターンをに変更する必要があります^news/([^/]+)/?$(注:との間^にスラッシュはありませんnews)。

于 2012-11-10T21:15:14.450 に答える